📅  最后修改于: 2023-12-03 14:42:21.728000             🧑  作者: Mango
Java.util.zip软件包提供了一组用于处理压缩和解压缩文件和数据流的类。这些类使得在Java中进行文件和数据的压缩和解压缩变得容易和高效。
要压缩文件或目录,可以使用java.util.zip.ZipOutputStream
类。以下是一个示例代码,演示了如何使用该类来创建一个压缩文件:
import java.io.*;
import java.util.zip.*;
public class ZipUtil {
public static void compress(String sourceDir, String zipFile) throws IOException {
FileOutputStream fos = new FileOutputStream(zipFile);
ZipOutputStream zos = new ZipOutputStream(fos);
File file = new File(sourceDir);
compressFile(file, file.getName(), zos);
zos.close();
fos.close();
System.out.println("压缩完成!");
}
private static void compressFile(File file, String fileName, ZipOutputStream zos) throws IOException {
if (file.isHidden()) {
return;
}
if (file.isDirectory()) {
File[] children = file.listFiles();
for (File childFile : children) {
compressFile(childFile, fileName + "/" + childFile.getName(), zos);
}
} else {
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
zos.closeEntry();
fis.close();
}
}
public static void main(String[] args) {
try {
compress("source_directory", "compressed_file.zip");
} catch (IOException e) {
e.printStackTrace();
}
}
}
要解压缩文件,可以使用java.util.zip.ZipInputStream
类。以下是一个示例代码,演示了如何使用该类来解压缩文件:
import java.io.*;
import java.util.zip.*;
public class UnzipUtil {
public static void decompress(String zipFile, String destDir) throws IOException {
FileInputStream fis = new FileInputStream(zipFile);
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry zipEntry = zis.getNextEntry();
while (zipEntry != null) {
String fileName = zipEntry.getName();
File newFile = new File(destDir + File.separator + fileName);
if (zipEntry.isDirectory()) {
new File(newFile.getParent()).mkdirs();
} else {
FileOutputStream fos = new FileOutputStream(newFile);
byte[] buffer = new byte[1024];
int length;
while ((length = zis.read(buffer)) >= 0) {
fos.write(buffer, 0, length);
}
fos.close();
}
zipEntry = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
fis.close();
System.out.println("解压缩完成!");
}
public static void main(String[] args) {
try {
decompress("compressed_file.zip", "destination_directory");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java.util.zip软件包还提供了许多其他类和功能,用于压缩和解压缩文件和数据流。以下是一些常用的类和功能的列表:
java.util.zip.GZIPInputStream
和java.util.zip.GZIPOutputStream
:用于处理GZIP压缩格式的文件和数据流。java.util.zip.Deflater
和java.util.zip.Inflater
:用于压缩和解压缩数据的底层类。java.util.zip.Adler32
和java.util.zip.CRC32
:用于计算数据的校验和。要了解更多关于Java.util.zip软件包的信息,请参考官方文档:Java.util.zip官方文档
希望本教程对你在Java中处理压缩和解压缩文件有所帮助!