java 自带的文件压缩


public class FileZip {
    /**
     * 压缩多个文件成一个zip文件
     * @param srcfile:源文件列表
     * @param zipfile:压缩后的文件
     */
    public static void zipFiles(File[] srcfile, File zipfile){
        byte[] buf=new byte[1024];
        try {
            //ZipOutputStream类:完成文件或文件夹的压缩
            //不写编码,压缩后有些文件名可能会出现乱码,我当时就是文件名乱码
 ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipfile), Charset.forName("GBK"));
            for(int i=0;i<srcfile.length;i++){
                String filename=srcfile[i].getName();
                FileInputStream in=new FileInputStream(srcfile[i]);
                out.putNextEntry(new ZipEntry(filename));
                int len;
                while((len=in.read(buf))>0){
                    out.write(buf,0,len);
                }
                out.closeEntry();
                in.close();
            }
            out.close();
            System.err.println("压缩完成.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 解压缩
     * @param zipfile:需要解压缩的文件
     * @param descDir:解压后的目标目录
     */
    public static void unZipFiles(File zipfile,String descDir){
        try {
            ZipFile zf=new ZipFile(zipfile);
            for(Enumeration entries = zf.entries(); entries.hasMoreElements();){
                ZipEntry entry=(ZipEntry) entries.nextElement();
                String zipEntryName=entry.getName();
                InputStream in=zf.getInputStream(entry);
                OutputStream out=new FileOutputStream(descDir+zipEntryName);
                byte[] buf1=new byte[1024];
                int len;
                while((len=in.read(buf1))>0){
                    out.write(buf1,0,len);
                }
                in.close();
                out.close();
                System.out.println("解压缩完成.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java后端开发中,可以使用Java自带的工具类来处理压缩文件。其中,java.util.zip包提供了ZipOutputStream类,专门用于对文件进行压缩操作。通过使用ZipOutputStream类,我们可以将文件文件压缩成一个zip文件。 使用ZipOutputStream类进行压缩文件的操作步骤如下: 1. 创建一个ZipOutputStream对象,指定要输出的文件流。 2. 使用putNextEntry方法创建一个新的ZipEntry对象,指定要压缩文件文件夹的路径。 3. 使用BufferedInputStream读取要压缩文件文件夹的内容,并使用ZipOutputStream的write方法将内容写入压缩文件。 4. 循环执行步骤2和步骤3,直到所有要压缩文件文件夹都被处理完毕。 5. 关闭ZipOutputStream对象,完成压缩操作。 下面是一个示例代码,展示了如何使用Java的ZipOutputStream类进行文件压缩操作: ```java import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public class ZipUtils { public static void compressFile(String sourceFilePath, String zipFilePath) throws IOException { File sourceFile = new File(sourceFilePath); FileOutputStream fos = new FileOutputStream(zipFilePath); ZipOutputStream zos = new ZipOutputStream(fos); compress(sourceFile, zos, ""); zos.close(); fos.close(); } private static void compress(File file, ZipOutputStream zos, String parentPath) throws IOException { if (file.isDirectory()) { // 如果是文件夹,则递归处理子文件夹和文件 File[] files = file.listFiles(); for (File subFile : files) { compress(subFile, zos, parentPath + file.getName() + "/"); } } else { // 如果是文件,则压缩文件 FileInputStream fis = new FileInputStream(file); byte[] buffer = new byte
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值