溫馨提示×

怎么用java實(shí)現(xiàn)壓縮文件

小億
83
2023-10-22 09:11:03
欄目: 編程語言

你可以使用Java的ZipOutputStream類來壓縮文件。下面是一個(gè)簡單的例子:

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.ZipOutputStream;

public class ZipFileExample {

    public static void main(String[] args) {
        String sourcePath = "path/to/source/file";
        String zipFilePath = "path/to/zip/file.zip";

        zipFile(sourcePath, zipFilePath);
    }

    public static void zipFile(String sourcePath, String zipFilePath) {
        try {
            File sourceFile = new File(sourcePath);
            FileOutputStream fos = new FileOutputStream(zipFilePath);
            ZipOutputStream zipOut = new ZipOutputStream(fos);

            addFileToZip(sourceFile, zipOut, "");

            zipOut.close();
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void addFileToZip(File file, ZipOutputStream zipOut, String parentDir) throws IOException {
        String path = parentDir + file.getName();
        if (file.isDirectory()) {
            File[] files = file.listFiles();
            for (File nestedFile : files) {
                addFileToZip(nestedFile, zipOut, path + "/");
            }
        } else {
            byte[] buffer = new byte[1024];
            FileInputStream fis = new FileInputStream(file);
            zipOut.putNextEntry(new ZipEntry(path));

            int length;
            while ((length = fis.read(buffer)) > 0) {
                zipOut.write(buffer, 0, length);
            }

            zipOut.closeEntry();
            fis.close();
        }
    }
}

在上述示例中,zipFile()方法接受源文件路徑和目標(biāo)ZIP文件路徑。它打開源文件,創(chuàng)建一個(gè)ZipOutputStream并將源文件添加到壓縮包。

addFileToZip()方法是一個(gè)遞歸方法,它將源文件或目錄添加到壓縮包中。如果源文件是目錄,它將遍歷目錄中的所有文件并遞歸調(diào)用自身。如果源文件是普通文件,它將讀取文件內(nèi)容并將其寫入壓縮包中。

請確保將sourcePath替換為要壓縮的文件或目錄的實(shí)際路徑,并將zipFilePath替換為要?jiǎng)?chuàng)建的ZIP文件的路徑。

0