文件上传与下载:Java工具类精选之6
发表时间: 2022-11-20 13:20
该系列为java工具类系列,主要展示100个常用的java工具类。
本系列工具类的核心目的主要有三点:
1,以便他用:提供可用的Java工具类,方便大家使用,避免重复造轮子
2,个人记录:作为个人记录,同时督促自己学习总结
3,为初学者提供思路,相互交流,共同进步
当然,很多细节部分经不起推敲,如存在部分代码不规范、注释不详细、格式不统一等问题,还望阅读者多多包涵,多提意见。
本文目录:
文件的上传,本文根据上传参数的不通介绍两种上传方式,分别是根据源文件路径和MultipartFile对象进行上传。
这两种方式基本上是类似的,因为可以获取或生成文件流,并由此在文件路径下生成新文件
此代码中没有删除源文件,使用者可根据实际需求来修改代码。
一、文件的上传(根据源文件路径上传)
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import org.apache.commons.io.FileUtils;import org.springframework.web.multipart.MultipartFile;/** * @Author 程序幻境 * @Date 2022/11/20 * @Version 1.0 */public class FtpUtil { public static void main(String[] args) { uploadFile("C:\Users\CXHJ\Desktop\1.txt","C:\Users\CXHJ\Desktop\1","1.txt"); } /** * 上传文件 * * @param srcFilePath 源文件全路径(包含文件名称) * @param filePath 上传路径 * @param fileName 文件名(目标文件名称,一般和源文件同名) */ public static String uploadFile(String srcFilePath, String filePath, String fileName) { try { //根据源文件路径,创建文件流 File file = new File(srcFilePath); InputStream in = new FileInputStream(file); //新建目标文件 File desFile = mkdirFiLe(filePath, fileName); //源文件写入目标文件 FileUtils.copyInputStreamToFile(in, desFile); //关流 in.close(); } catch (IOException e) { e.printStackTrace(); } return fileName; } /** * 判断路径是否存在,如果不存在,创建此路径 * * @param filePath 文件路径 * @param fileName 文件名 * @throws IOException */ public static File mkdirFiLe(String filePath, String fileName) throws IOException { File file = new File(filePath, fileName); if (!file.exists()) { if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } file.createNewFile(); } return file; }}
二、文件的上传(根据根据MultipartFile上传)
import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import org.apache.commons.io.FileUtils;import org.springframework.web.multipart.MultipartFile;/** * @Author 程序幻境 * @Date 2022/11/20 * @Version 1.0 */public class FtpUtil { public static void main(String[] args) { uploadFile("C:\Users\CXHJ\Desktop\1.txt","C:\Users\CXHJ\Desktop\1","1.txt"); } /** * 上传文件 * * @param file 文件对象 * @param filePath 上传路径 * @param fileName 文件名 */ public static String uploadFile(MultipartFile file, String filePath, String fileName) { try { //获取文件流 InputStream in = file.getInputStream(); //新建目标文件 File desFile = mkdirFiLe(filePath, fileName); //源文件写入目标文件 FileUtils.copyInputStreamToFile(in, desFile); //关流 in.close(); } catch (IOException e) { e.printStackTrace(); } return fileName; } /** * 判断路径是否存在,如果不存在,创建此路径 * * @param filePath 文件路径 * @param fileName 文件名 * @throws IOException */ public static File mkdirFiLe(String filePath, String fileName) throws IOException { File file = new File(filePath, fileName); if (!file.exists()) { if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } file.createNewFile(); } return file; }}
三、文件的下载
import java.io.BufferedInputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.MalformedURLException;import java.net.URL; import org.apache.commons.io.FileUtils;import org.springframework.web.multipart.MultipartFile;/** * @param filePath 文件完整路径(包括文件名和扩展名) * @param fileName 下载后看到的文件名 * @return 文件名 */ public static void fileDownload(final HttpServletResponse response, String filePath, String fileName) throws Exception{ File file = new File(filePath); byte[] data = FileUtils.readFileToByteArray(file); fileName = URLEncoder.encode(fileName, "UTF-8"); response.reset(); response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); response.addHeader("Content-Length", "" + data.length); response.setContentType("application/octet-stream;charset=UTF-8"); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream()); outputStream.write(data); outputStream.flush(); outputStream.close(); response.flushBuffer(); }
本文仅供个人记录,大家可以借鉴,每行代码都是自己手打,亲测可直接粘贴执行,如有任何问题可在评论区提问,欢迎大家交流。
编辑人:程序幻境
码字不易,不喜勿踩