【四二学堂】java从远程url文件流读取文件,并且下载到本地

tech2026-10-08  2

 java从远程url文件流读取文件,并且下载到本地(写个循环就可实现批量)

import java.io.*; import java.net.HttpURLConnection; import java.net.URL; public class FileUtils { /** * 获取远程文件 * * @param remoteFilePath 远程文件路径 * @param localFilePath 本地文件路径 */ public static void downloadFile(String remoteFilePath, String localFilePath) { URL urlfile = null; HttpURLConnection httpUrl = null; BufferedInputStream bis = null; BufferedOutputStream bos = null; File f = new File(localFilePath); try { urlfile = new URL(remoteFilePath); httpUrl = (HttpURLConnection) urlfile.openConnection(); httpUrl.connect(); bis = new BufferedInputStream(httpUrl.getInputStream()); bos = new BufferedOutputStream(new FileOutputStream(f)); int len = 2048; byte[] b = new byte[len]; while ((len = bis.read(b)) != -1) { bos.write(b, 0, len); } bos.flush(); bis.close(); httpUrl.disconnect(); } catch (Exception e) { e.printStackTrace(); } finally { try { bis.close(); bos.close(); } catch (IOException e) { e.printStackTrace(); } } } }

使用方法

//如果链接包含中文,需要转码 String resultWordPath = URLEncoderUtils.encode(wordPath); String fileName = System.currentTimeMillis() + ""; String localPath = Constant.FILE_SAVE_PATH + "/doc/" + fileName + ".doc"; FileUtils.downloadFile(resultWordPath, localPath);

转码工具类

import java.io.UnsupportedEncodingException; import java.net.URLEncoder; public class URLEncoderUtils { public static String encode(String url) { try { String resultURL = ""; //遍历字符串 for (int i = 0; i < url.length(); i++) { char charAt = url.charAt(i); //只对汉字处理 if (isChineseChar(charAt)) { String encode = URLEncoder.encode(charAt + "", "UTF-8"); resultURL += encode; } else { resultURL += charAt; } } return resultURL; } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } //判断汉字的方法,只要编码在\u4e00到\u9fa5之间的都是汉字 public static boolean isChineseChar(char c) { return String.valueOf(c).matches("[\u4e00-\u9fa5]"); } }

 

最新回复(0)