java实现从服务器下载文件到本地指定目录
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
/**
* 根据指定URL将文件下载到指定目标位置
* urlPath 下载路径
* downloadDir 文件存放目录
* @return
*/
public String downloadFile(HttpServletRequest request,String urlPath){
File file = null;
try {
// 统一资源
if (StringUtils.isNotEmptyObject(PropertiesUtil.FILE_SAVE_PATH)) {
// urlPath = PropertiesUtil.FILE_SAVE_PATH + urlPath;
urlPath = "http://172.16.2.215:7777/" + urlPath;
}else{
urlPath = request.getSession().getServletContext().getRealPath("")+urlPath;
}
// 统一资源
URL url = new URL(urlPath);
// 连接类的父类,抽象类
URLConnection urlConnection = url.openConnection();
// http的连接类
HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection;
//设置超时
httpURLConnection.setConnectTimeout(1000*5);
//设置请求方式,默认是GET
httpURLConnection.setRequestMethod("GET");
// 设置字符编码
httpURLConnection.setRequestProperty("Charset", "UTF-8");
httpURLConnection.connect();
int fileLength = httpURLConnection.getContentLength();
BufferedInputStream bin = new BufferedInputStream(httpURLConnection.getInputStream());
String fileFullName = urlPath.substring(urlPath.lastIndexOf("/"));
// 指定存放位置
String path = "C:" + File.separatorChar + fileFullName;
file = new File(path);
// 校验文件夹目录是否存在,不存在就创建一个目录
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
OutputStream out = new FileOutputStream(file);
int size = 0;
int len = 0;
byte[] buf = new byte[2048];
while ((size = bin.read(buf)) != -1) {
len += size;
out.write(buf, 0, size);
System.out.println("下载了-------> " + len * 100 / fileLength + "%\n");
}
System.out.println("C:"+ File.separatorChar + urlPath.substring(urlPath.lastIndexOf("/")).split("/")[1]);
bin.close();
out.close();
System.out.println("文件下载成功!");
} catch (Exception e) {
System.out.println("文件下载失败!");
e.printStackTrace();
}finally {
return "C:"+ File.separatorChar + urlPath.substring(urlPath.lastIndexOf("/")).split("/")[1];
}
}
原文作者:ernesto_ji
原文地址: https://blog.csdn.net/qq_38407462/article/details/102856173
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/qq_38407462/article/details/102856173
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章