Java 后端文本文件压缩方法:GZIP 和 ZIP 示例
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);
}
}
原文地址: https://www.cveoy.top/t/topic/mJAO 著作权归作者所有。请勿转载和采集!