首页 > 其他分享 >FileUtil

FileUtil

时间:2022-11-12 16:11:49浏览次数:32  
标签:files bos new null response FileUtil out

package com.thtf.zwdsj.fangjia.utils;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * @创建人 qinyangyang
 * @创建时间 2022/11/7
 * @描述
 */
public class FileUtil {

    /**
     * 功能:压缩多个文件,输出压缩后的zip文件流
     *
     * @param sourcePath:源文件路径
     * @param zipFileName:压缩后的文件名
     * @param response:           Http响应
     */
    public static void zipFiles(String sourcePath, String zipFileName, HttpServletResponse response) throws IOException {


        File[] files = new File(sourcePath).listFiles();


        byte[] buf = new byte[1024];
        // 获取输出流
        BufferedOutputStream bos = null;
        try {
            bos = new BufferedOutputStream(response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        FileInputStream in = null;
        ZipOutputStream out = null;
        try {
            response.reset(); // 重点突出
            // 不同类型的文件对应不同的MIME类型
            response.setContentType("application/x-msdownload");
            response.setCharacterEncoding("utf-8");
            response.setHeader("Content-disposition", "attachment;filename=" + zipFileName + ".zip");

            // ZipOutputStream类:完成文件或文件夹的压缩
            out = new ZipOutputStream(bos);
            for (int i = 0; i < files.length; i++) {
                in = new FileInputStream(files[i]);
                // 给列表中的文件单独命名
                out.putNextEntry(new ZipEntry(files[i].getName()));
                int len = -1;
                while ((len = in.read(buf)) != -1) {
                    out.write(buf, 0, len);
                }
            }
            System.out.println("压缩完成.");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (in != null) {
                in.close();
            }
            if (bos != null) {
                bos.flush();
                bos.close();
            }
            if (out != null) {
                out.flush();
                out.close();
            }
        }
    }

    public static void deleteFile(File file) {
        File[] files = file.listFiles();
        if (files != null) {//如果包含文件进行删除操作
            for (int i = 0; i < files.length; i++) {
                if (files[i].isFile()) {
                    //删除子文件
                    files[i].delete();
                } else if (files[i].isDirectory()) {
                    //通过递归的方法找到子目录的文件
                    deleteFile(files[i]);
                }
                files[i].delete();//删除子目录
            }
        }
    }

}

 

标签:files,bos,new,null,response,FileUtil,out
From: https://www.cnblogs.com/chenTo/p/16883996.html

相关文章

  • Muduo库之ProcessInfo、Exception、FileUtil
    ProcessInfo在ProcessInfo.h文件中,存在一个命名空间ProcessInfo,其中声明了大部分进程需要使用到相关信息的函数,比如进程的PID、UID、EUID,主机名,进程状态,程状态等等。......
  • FileUtils工具类
    导入第三方jar:commons-io@Testpublicvoidtest7()throwsIOException{FilesrcFile=newFile("hello.txt");FiledestFile=newFile("hel......
  • 【Java】FileUtils-获取路径的所有文件(或文件夹)
    一、获取指定路径下的所有Excel文件packagecom.boulderaitech.utils;importjava.io.File;importjava.util.Arrays;publicclassFileUtil{publicstaticvo......