Java 后端可以使用压缩算法来压缩文本文件大小,常见的压缩算法有 GZIP 和 ZIP。

'GZIP' 是一种基于 DEFLATE 算法的压缩格式,在 Java 中可以通过使用 'GZIPOutputStream' 和 'GZIPInputStream' 类来实现压缩和解压缩。示例代码如下:

import java.io.*;
import java.util.zip.GZIPOutputStream;
import java.util.zip.GZIPInputStream;

public class GZipExample {

    public static void compress(File inputFile, File outputFile) throws IOException {
        try (InputStream inputStream = new FileInputStream(inputFile);
             OutputStream outputStream = new FileOutputStream(outputFile);
             GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream)) {

            byte[] buffer = new byte[1024];
            int len;
            while ((len = inputStream.read(buffer)) != -1) {
                gzipOutputStream.write(buffer, 0, len);
            }

            gzipOutputStream.finish();
        }
    }

    public static void decompress(File inputFile, File outputFile) throws IOException {
        try (InputStream inputStream = new FileInputStream(inputFile);
             GZIPInputStream gzipInputStream = new GZIPInputStream(inputStream);
             OutputStream outputStream = new FileOutputStream(outputFile)) {

            byte[] buffer = new byte[1024];
            int len;
            while ((len = gzipInputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, len);
            }
        }
    }

    public static void main(String[] args) throws IOException {
        File inputFile = new File("input.txt");
        File compressedFile = new File("compressed.gz");
        File decompressedFile = new File("decompressed.txt");

        // 压缩文件
        compress(inputFile, compressedFile);

        // 解压缩文件
        decompress(compressedFile, decompressedFile);
    }
}

'ZIP' 是一种常用的压缩格式,可以将多个文件压缩到一个 ZIP 文件中。在 Java 中可以使用 'ZipOutputStream' 和 'ZipInputStream' 类实现压缩和解压缩。示例代码如下:

import java.io.*;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ZipExample {

    public static void compress(File[] inputFiles, File outputFile) throws IOException {
        try (OutputStream outputStream = new FileOutputStream(outputFile);
             ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream)) {

            byte[] buffer = new byte[1024];
            for (File inputFile : inputFiles) {
                try (InputStream inputStream = new FileInputStream(inputFile)) {
                    ZipEntry zipEntry = new ZipEntry(inputFile.getName());
                    zipOutputStream.putNextEntry(zipEntry);

                    int len;
                    while ((len = inputStream.read(buffer)) != -1) {
                        zipOutputStream.write(buffer, 0, len);
                    }

                    zipOutputStream.closeEntry();
                }
            }
        }
    }

    public static void decompress(File inputFile, File outputDirectory) throws IOException {
        try (InputStream inputStream = new FileInputStream(inputFile);
             ZipInputStream zipInputStream = new ZipInputStream(inputStream)) {

            byte[] buffer = new byte[1024];
            ZipEntry zipEntry;
            while ((zipEntry = zipInputStream.getNextEntry()) != null) {
                File outputFile = new File(outputDirectory, zipEntry.getName());

                if (zipEntry.isDirectory()) {
                    outputFile.mkdirs();
                } else {
                    outputFile.getParentFile().mkdirs();
                    try (OutputStream outputStream = new FileOutputStream(outputFile)) {
                        int len;
                        while ((len = zipInputStream.read(buffer)) != -1) {
                            outputStream.write(buffer, 0, len);
                        }
                    }
                }

                zipInputStream.closeEntry();
            }
        }
    }

    public static void main(String[] args) throws IOException {
        File[] inputFiles = {new File("input1.txt"), new File("input2.txt")};
        File compressedFile = new File("compressed.zip");
        File outputDirectory = new File("output");

        // 压缩文件
        compress(inputFiles, compressedFile);

        // 解压缩文件
        decompress(compressedFile, outputDirectory);
    }
}
Java 后端文本文件压缩方法:GZIP 和 ZIP 示例

原文地址: https://www.cveoy.top/t/topic/mJAO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录