0
点赞
收藏
分享

微信扫一扫

java 处理压缩文件

先峰老师 2023-08-07 阅读 57

Java处理压缩文件

简介

在日常开发中,我们经常会遇到需要处理压缩文件的情况。压缩文件可以节省文件存储空间,提高文件传输效率。Java提供了丰富的压缩文件处理库,使得我们可以轻松地进行压缩和解压缩操作。本文将介绍Java中处理压缩文件的常用方式,并提供相应的代码示例。

压缩文件的概念

压缩文件是指通过对一个或多个文件或文件夹进行压缩处理,使其占用的磁盘空间减小的文件。常见的压缩文件格式有ZIP、GZIP、TAR等。

Java处理ZIP文件

ZIP是一种常见的压缩文件格式,Java提供了java.util.zip包来处理ZIP文件。下面是一个处理ZIP文件的示例代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class ZipUtils {

    public static void zipFile(File fileToZip, String zipFileName) throws IOException {
        try (FileOutputStream fos = new FileOutputStream(zipFileName);
             ZipOutputStream zos = new ZipOutputStream(fos);
             FileInputStream fis = new FileInputStream(fileToZip)) {

            ZipEntry zipEntry = new ZipEntry(fileToZip.getName());
            zos.putNextEntry(zipEntry);

            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) >= 0) {
                zos.write(buffer, 0, length);
            }

            zos.closeEntry();
        }
    }

    public static void unzipFile(String zipFileName, String destDirectory) throws IOException {
        File destDir = new File(destDirectory);
        if (!destDir.exists()) {
            destDir.mkdir();
        }

        try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFileName))) {
            ZipEntry zipEntry = zis.getNextEntry();
            while (zipEntry != null) {
                String fileName = zipEntry.getName();
                File newFile = new File(destDirectory + File.separator + fileName);

                new File(newFile.getParent()).mkdirs();

                try (FileOutputStream fos = new FileOutputStream(newFile)) {
                    byte[] buffer = new byte[1024];
                    int length;
                    while ((length = zis.read(buffer)) >= 0) {
                        fos.write(buffer, 0, length);
                    }
                }
                zipEntry = zis.getNextEntry();
            }
        }
    }
}

上述代码中,zipFile方法用于将指定的文件压缩为一个ZIP文件,参数fileToZip为待压缩的文件,zipFileName为压缩后的ZIP文件名。unzipFile方法用于解压缩指定的ZIP文件,参数zipFileName为待解压缩的ZIP文件名,destDirectory为解压缩后的目标目录。

Java处理GZIP文件

GZIP是一种常见的压缩文件格式,Java提供了java.util.zip包来处理GZIP文件。下面是一个处理GZIP文件的示例代码:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class GzipUtils {

    public static void gzipFile(File fileToGzip, String gzipFileName) throws IOException {
        try (FileInputStream fis = new FileInputStream(fileToGzip);
             FileOutputStream fos = new FileOutputStream(gzipFileName);
             GZIPOutputStream gzipOS = new GZIPOutputStream(fos)) {

            byte[] buffer = new byte[1024];
            int length;
            while ((length = fis.read(buffer)) >= 0) {
                gzipOS.write(buffer, 0, length);
            }
        }
    }

    public static void gunzipFile(String gzipFileName, String targetFileName) throws IOException {
        try (FileInputStream fis = new FileInputStream(gzipFileName);
             GZIPInputStream gzipIS = new GZIPInputStream(fis);
             FileOutputStream fos = new FileOutputStream(targetFileName)) {

            byte[] buffer = new byte[1024];
            int length;
            while ((length = gzipIS.read(buffer)) >= 0) {
                fos.write(buffer, 0, length);
            }
        }
    }
}

上述代码中,gzipFile方法用于将指定的文件压缩为一个GZIP文件,参数fileToGzip为待压缩的文件,gzipFileName为压缩后的GZIP文件

举报

相关推荐

0 条评论