通过http进行文件下载,本实例仅供参考,实际使用效果不太理想。
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(); } } } }