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; } }
阅读全文
0 0
- JAVA开发视频下载
- java EE视频下载
- Java断点续传下载视频
- java视频下载
- java 视频教育下载地址:
- 下载java视频的网站
- java ee视频下载地址
- Java学习视频免费下载
- java学习常用视频下载
- 用多线程下载视频(Java)
- 免费java精品电子书、视频下载
- java系列视频学习下载网址
- java视频网站收藏、传智播客下载地址。
- java的视频案例教学 值得下载
- 广州Java培训视频在哪儿有得下载?
- 史上最全Java学习视频下载地址分享
- 尚学堂所有Java视频下载
- 史上最全Java学习视频下载地址分享
- android电话音量静音的原理
- 【iOS】TTTAttributedLabel链接点击
- 【代码积累】NIO server
- jsp
- 商品展示
- java视频下载
- What is a GPU and how does it work?
- EL&JSTL
- web服务器 字体.svg/.woff/.woff2 404错误 解决方案
- 安装arm-linux-gcc交叉编译环境
- QWT中Qdial的入门介绍
- 程序Dog的大梦想
- HTTP协议中,GET与POST方法的区别有3点:
- 【代码积累】quick sort