java视频下载

来源:互联网 发布:詹姆斯13年总决赛数据 编辑:程序博客网 时间:2024/06/05 04:10
 /**     * 下载文件到本地     *     * @param urlString     *          被下载的文件地址     * @param filename     *          本地文件名     * @param timeout     *          超时时间毫秒     * @throws Exception     *           各种异常     */    public static boolean download(String urlString, String filename,int timeout){        boolean ret = false;        File file = new File(filename);        try {            if(file.exists()){                ret = true;            }else{                // 构造URL                URL url = new URL(urlString);                // 打开连接                HttpURLConnection con = (HttpURLConnection )url.openConnection();                con.setConnectTimeout(timeout);                con.setReadTimeout(timeout);                con.connect();                int contentLength = con.getContentLength();                // 输入流                InputStream is = con.getInputStream();                // 1K的数据缓冲                byte[] bs = new byte[1024];                // 读取到的数据长度                int len;                // 输出的文件流                File file2=new File(file.getParent());                file2.mkdirs();                if(file.isDirectory()){                }else{                    file.createNewFile();//创建文件                }                OutputStream os = new FileOutputStream(file);                // 开始读取                while ((len = is.read(bs)) != -1) {                    os.write(bs, 0, len);                }                // 完毕,关闭所有链接                os.close();                is.close();                if(contentLength != file.length()){                    file.delete();                    ret = false;                }else{                    ret = true;                }            }        } catch (IOException e) {            file.delete();            ret = false;            LOGGER.error("[VideoUtil:download]:\n" + " VIDEO URL:" + urlString + " \n NEW FILENAME:" + filename + " DOWNLOAD FAILED!! ");        }finally {            return ret;        }    }    /**     * 断点续传     * @param urlString     * @param filename     * @param timeout     * @return     */    public static boolean resumeDownload(String urlString, String filename,int timeout) throws Exception{        boolean ret = false;        File fileFinal = new File(filename);        String tmpFileName = filename+".tmp";        File file = new File(tmpFileName);        try {            if(fileFinal.exists()){                ret = true;            }else{                long contentStart = 0;                File file2=new File(file.getParent());                if(file.exists()){                    contentStart = file.length();                }else{                    file2.mkdirs();                }                // 构造URL                URL url = new URL(urlString);                // 打开连接                HttpURLConnection con = (HttpURLConnection )url.openConnection();                con.setConnectTimeout(timeout);                con.setReadTimeout(timeout);                //设置续传的点                if(contentStart>0){                    con.setRequestProperty("RANGE","bytes="+contentStart+"-");                }                con.connect();                int contentLength = con.getContentLength();                // 输入流                InputStream is = con.getInputStream();                // 100Kb的数据缓冲                byte[] bs = new byte[100*1024];                // 读取到的数据长度                int len;                RandomAccessFile oSavedFile = new RandomAccessFile(tmpFileName,"rw");                oSavedFile.seek(contentStart);                // 开始读取                while ((len = is.read(bs)) != -1) {                    oSavedFile.write(bs, 0, len);                }                // 完毕,关闭所有链接                oSavedFile.close();                is.close();                file.renameTo(fileFinal);                ret = true;            }        } catch (IOException e) {            file.delete();            ret = false;            LOGGER.error("[VideoUtil:download]:\n" + " VIDEO URL:" + urlString + " \n NEW FILENAME:" + filename + " DOWNLOAD FAILED!! ");            throw new Exception(e);        }finally {            return ret;        }    }
原创粉丝点击