文件上传与下载:Java工具类精选之6

发表时间: 2022-11-20 13:20

该系列为java工具类系列,主要展示100个常用的java工具类。

本系列工具类的核心目的主要有三点:

1,以便他用:提供可用的Java工具类,方便大家使用,避免重复造轮子

2,个人记录:作为个人记录,同时督促自己学习总结

3,为初学者提供思路,相互交流,共同进步

当然,很多细节部分经不起推敲,如存在部分代码不规范、注释不详细、格式不统一等问题,还望阅读者多多包涵,多提意见。

本文目录:

文件的上传(根据源文件路径上传)

文件的上传(根据MultipartFile上传)

文件的下载


文件的上传,本文根据上传参数的不通介绍两种上传方式,分别是根据源文件路径和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();    }

本文仅供个人记录,大家可以借鉴,每行代码都是自己手打,亲测可直接粘贴执行,如有任何问题可在评论区提问,欢迎大家交流。

编辑人:程序幻境

码字不易,不喜勿踩