工具类(网络文件下载到本地)
工具类(网络文件下载到本地)
package com.cpiaoju.constructionbank.util; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.ccb.sdk.CCBSDK; import com.cpiaoju.constructionbank.constant.SysInstance; import com.cpiaoju.constructionbank.entity.FileInfo; import com.cpiaoju.constructionbank.exception.SysException; import lombok.extern.slf4j.Slf4j; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.time.LocalDateTime; import java.util.List; @Slf4j public abstract class SysUtil {
/** * 将网路图片保存到本地 * * @param url 文件网络地址 * @param filePath 文件保存地址 * @param fileName 文件名称 */ public static String saveFileByUrl(String url, String filePath, String fileName) { //String fileName = SysUtil.genFileName(url); //创建不同的文件夹目录 File file = new File(filePath); //判断文件夹是否存在 if (!file.exists()) { //如果文件夹不存在,则创建新的的文件夹 file.mkdirs(); } FileOutputStream fileOut = null; HttpURLConnection conn = null; InputStream inputStream = null; try { // 建立链接 URL httpUrl = new URL(url); conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); // post方式不能使用缓存 conn.setUseCaches(false); //连接指定的资源 conn.connect(); //获取网络输入流 inputStream = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream); //判断文件的保存路径后面是否以/结尾 if (!filePath.endsWith("/")) { filePath += "/"; } //写入到文件(注意文件保存路径的后面一定要加上文件的名称) fileOut = new FileOutputStream(filePath + fileName); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[4096]; int length = bis.read(buf); //保存文件 while (length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); conn.disconnect(); return filePath + fileName; } catch (Exception e) { e.printStackTrace(); throw new SysException("文件处理异常"); } } /** * 将网路图片保存到本地 * * @param url 文件网络地址 * @param filePath 文件保存地址 * @param fileName 文件名称 */ public static void saveFileByUrlAndFileName(String url, String filePath,String fileName) { //创建不同的文件夹目录 File file = new File(filePath); //判断文件夹是否存在 if (!file.exists()) { //如果文件夹不存在,则创建新的的文件夹 file.mkdirs(); } FileOutputStream fileOut = null; HttpURLConnection conn = null; InputStream inputStream = null; try { // 建立链接 URL httpUrl = new URL(url); conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); // post方式不能使用缓存 conn.setUseCaches(false); //连接指定的资源 conn.connect(); //获取网络输入流 inputStream = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream); //判断文件的保存路径后面是否以/结尾 if (!filePath.endsWith("/")) { filePath += "/"; } //写入到文件(注意文件保存路径的后面一定要加上文件的名称) fileOut = new FileOutputStream(filePath + fileName); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[4096]; int length = bis.read(buf); //保存文件 while (length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); throw new SysException("文件处理异常"); } } public static void saveFileByUrl(String url, String filePath) { String fileName = SysUtil.genFileName(url); //创建不同的文件夹目录 File file = new File(filePath); //判断文件夹是否存在 if (!file.exists()) { //如果文件夹不存在,则创建新的的文件夹 file.mkdirs(); } FileOutputStream fileOut = null; HttpURLConnection conn = null; InputStream inputStream = null; try { // 建立链接 URL httpUrl = new URL(url); conn = (HttpURLConnection) httpUrl.openConnection(); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); // post方式不能使用缓存 conn.setUseCaches(false); //连接指定的资源 conn.connect(); //获取网络输入流 inputStream = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(inputStream); //判断文件的保存路径后面是否以/结尾 if (!filePath.endsWith("/")) { filePath += "/"; } //写入到文件(注意文件保存路径的后面一定要加上文件的名称) fileOut = new FileOutputStream(filePath + fileName); BufferedOutputStream bos = new BufferedOutputStream(fileOut); byte[] buf = new byte[4096]; int length = bis.read(buf); //保存文件 while (length != -1) { bos.write(buf, 0, length); length = bis.read(buf); } bos.close(); bis.close(); conn.disconnect(); } catch (Exception e) { e.printStackTrace(); throw new SysException("文件处理异常"); } } public static void saveFileByUrl(List<String> urls, String filePath) { urls.forEach(url -> SysUtil.saveFileByUrl(url, filePath)); } /** * 推送订单时,订单编号请按照 平台方缩写+年月日时+6位数字 的格式推送 * * @return 订单编号 */ public static String genOrderId() { return "LX" + DateUtil.format(LocalDateTime.now(), "yyyyMMddHH") + RandomUtil.randomInt(100000, 1000000); } /** * 生成文件名 */ public static String genFileName(String suffix) { return IdUtil.fastSimpleUUID() + suffix; } /** * 生成路径 */ public static String appendPath(String fileName) { String os = System.getProperty("os.name"); // windows使用反斜杠 if (StrUtil.containsIgnoreCase(os, SysInstance.SYSTEM_WINDOWS)) { fileName += "\\"; } else { fileName += "/"; } File upload = new File(fileName); if (!upload.exists()) { upload.mkdirs(); } return fileName; } }
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2017-03-07 Unit06: Spring对JDBC的 整合支持 、 Spring+JDBC Template、Spring异常处理