📅  最后修改于: 2023-12-03 15:38:55.357000             🧑  作者: Mango
在开发过程中,我们经常会遇到需要读取 .gz 格式压缩文件的情况,本文将介绍如何使用 Python 和 Java 读取 .gz 文件。
Python 通过 gzip
模块提供了读取 .gz 文件的支持。
要读取压缩文件的内容,可以通过 gzip.open
打开文件。下面是一个示例:
import gzip
with gzip.open('example.gz', 'rt', encoding='utf-8') as f:
text = f.read()
print(text)
在上面的代码中,'example.gz'
是压缩文件的文件名,'rt'
制定了以文本模式读取文件,encoding='utf-8'
制定了使用 UTF-8 编码解压缩后的文本。
如果要逐行读取文件内容,可以使用 gzip.open
打开文件,并使用 readline
方法读取每一行。下面是示例:
import gzip
with gzip.open('example.gz', 'rt', encoding='utf-8') as f:
for line in f:
print(line.strip())
在上面的代码中,strip
方法用来去掉每行末尾的换行符。
Java 通过 java.util.zip
包提供了读取 .gz 文件的支持。
要读取压缩文件的内容,可以通过 GZIPInputStream
类的构造函数创建输入流,然后将输入流封装成 BufferedReader
类来逐行读取文本。下面是一个示例:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.zip.GZIPInputStream;
public class ReadGzipFile {
public static void main(String[] args) {
try (GZIPInputStream input = new GZIPInputStream(new FileInputStream("example.gz"));
BufferedReader reader = new BufferedReader(new InputStreamReader(input))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
如果要读取压缩的二进制文件,可以通过 GZIPInputStream
类的构造函数创建输入流,然后从输入流中读取数据。下面是示例:
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
public class ReadBinaryGzipFile {
public static void main(String[] args) {
byte[] buffer = new byte[1024];
try (GZIPInputStream input = new GZIPInputStream(new FileInputStream("example.gz"));
FileOutputStream output = new FileOutputStream("example")) {
int len;
while ((len = input.read(buffer)) > 0) {
output.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在上面的代码中,buffer
数组用来缓冲读取的数据。