java实现从服务器下载文件到本地指定目录

mac2025-06-06  59

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]; } }
最新回复(0)