当前位置: 移动技术网 > IT编程>开发语言>Java > java使用http实现文件下载学习示例

java使用http实现文件下载学习示例

2019年07月22日  | 移动技术网IT编程  | 我要评论

阿忠农家乐,童安格近况,八门遁甲之阵

复制代码 代码如下:

package com.hongyuan.test;

import java.io.file;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.inputstream;
import java.io.outputstream;
import java.net.httpurlconnection;
import java.net.malformedurlexception;
import java.net.url;
import java.net.urldecoder;

public class filedownload {

 public static final string local_path="d:/";

 public static void main(string[] args) {
  //待下载文件地址
  string fileurl="http://211.162.55.16/cdn.baidupcs.com/file/6a73dab7c03023a9835cc737f447674d?xcode=af6ffdc43a44169bac968d32c4bd420084a9a97c308112c9&fid=3255571826-250528-130564002&time=1397293108&sign=fdtaxer-dcb740ccc5511e5e8fedcff06b081203-mqkoerdtxpyqwwyjki%2bxkjpxn5k%3d&to=cb&fm=n,b,u,nc&newver=1&expires=1397297563&rt=sh&r=854979042&logid=1751715936&sh=1&vuk=3255571826&fn=web%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%20%e7%ac%ac5%e7%89%88.pdf&wshc_tag=0&wsiphost=ipdbm";
  inputstream in=null;
  outputstream out=null;
  httpurlconnection conn=null;
  string filename=null;
  try {
   //初始化连接
   url url=new url(fileurl);
   conn = (httpurlconnection) url.openconnection();
   conn.setdoinput(true);
   conn.setdooutput(true);

   //获取文件名
   string disposition=conn.getheaderfield("content-disposition");
   if(disposition!=null&&!"".equals(disposition)){
    //从头中获取文件名
    filename=disposition.split(";")[1].split("=")[1].replaceall("\"","");
   }else{
    //从地址中获取文件名
    filename=fileurl.substring(fileurl.lastindexof("/")+1);
   }

   if(filename!=null&&!"".equals(filename)){
    //文件名解码
    filename=urldecoder.decode(filename, "utf-8");
   }else{
    //如果无法获取文件名,则随机生成一个
    filename="file_"+(int)(math.random()*10);
   }

   //读取数据
   if(conn.getresponsecode()==httpurlconnection.http_ok){
    byte[] buffer=new byte[2048];
    in = conn.getinputstream();
    out=new fileoutputstream(new file(local_path,filename));
    int count=0;
    int finished=0;
    int size=conn.getcontentlength();
    while((count=in.read(buffer))!=-1){
     if(count!=0){
      out.write(buffer,0,count);
      finished+=count;
      system.out.printf("########################################---->%1$.2f%%\n",(double)finished/size*100);
     }else{
      break;
     }
    }
   }
  } catch (malformedurlexception e) {
   e.printstacktrace();
  } catch (ioexception e) {
   e.printstacktrace();
  }finally{
   try {
    out.close();
    in.close();
    conn.disconnect();
   } catch (ioexception e) {
    e.printstacktrace();
   }
  }
 }
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网