Java 使用GZIP格式对文件进行压缩和解压
java.util.zip包提供了压缩和解压文件内容的类。在Java中提供了FileInputStream、FileOutputStream和GZIPOOutputStream类来压缩和解压文件。
使用GZIPOutputStream压缩文件
程序中使用的方法
- read(): 读取一个字节的数据。存在于FileInputStream中。
int read()
- write(): 写入一个字节的数据,呈现在FileOutputStream中。
void write(int b)
在这个例子中,我们在 “GeeksforGeeks “文件夹下的 /home/saket/Desktop/GeeksforGeeks/compress.java 驱动器中有一个文本文件,我们在同一文件夹中压缩并生成GZip文件。
// Java program to compress a File
// using GZIPOutputStream class
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
public class GeeksForGeeks
{
static final String OUTPUT_FILE
= "/home/saket/Desktop/GeeksforGeeks/compress.gz";
static final String INPUT_FILE
= "/home/saket/Desktop//GeeksforGeeks/compress.java";
static void compress()
{
byte[] buffer = new byte[1024];
try
{
GZIPOutputStream os =
new GZIPOutputStream(new FileOutputStream(OUTPUT_FILE));
FileInputStream in =
new FileInputStream(INPUT_FILE);
int totalSize;
while((totalSize = in.read(buffer)) > 0 )
{
os.write(buffer, 0, totalSize);
}
in.close();
os.finish();
os.close();
System.out.println("File Successfully compressed");
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static void main (String[] args)
{
compress();
}
}
输出:
File Successfully compressed
运行上述程序后,它将压缩compress.java文件:
使用GZIPOutputStream解压文件
// Java program to illustrate
// Decompressing a File using GZIPOutputStream
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
class GeeksForGeeks
{
static final String INPUT_FILE
= "/home/saket/Desktop/GeeksforGeeks/compress.gz";
static final String OUTPUT_FILE
= "/home/saket/Desktop//GeeksforGeeks/decompress.java";
static void decompress()
{
byte[] buffer = new byte[1024];
try
{
GZIPInputStream is =
new GZIPInputStream(new FileInputStream(INPUT_FILE));
FileOutputStream out =
new FileOutputStream(OUTPUT_FILE);
int totalSize;
while((totalSize = is.read(buffer)) > 0 )
{
out.write(buffer, 0, totalSize);
}
out.close();
is.close();
System.out.println("File Successfully decompressed");
}
catch (IOException e)
{
e.printStackTrace();
}
}
public static void main (String[] args)
{
decompress();
}
}
输出:
File Successfully decompressed
编译后的当前状态。
注意: 这里decom.java包含上述代码。
运行上述程序后,它将解压compress.gz,并创建一个名为 decompress.java 的文件。