作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
场景是读取一个gzip文件(扩展名为.gz)
知道有 GZIPInputStream 类来处理这个。
这里是将文件对象转换为 GZIPStream 的代码。
FileInputStream fin = new FileInputStream(FILENAME);
GZIPInputStream gzis = new GZIPInputStream(fin);
疑问是如何从这个'gzis'对象中读取内容?
最佳答案
从 InputStream 解码字节,您可以使用 InputStreamReader。 BufferedReader 将允许您逐行读取您的流。
如果 zip 是文本文件
ByteArrayInputStream bais = new ByteArrayInputStream(responseBytes);
GZIPInputStream gzis = new GZIPInputStream(bais);
InputStreamReader reader = new InputStreamReader(gzis);
BufferedReader in = new BufferedReader(reader);
String readed;
while ((readed = in.readLine()) != null) {
System.out.println(readed);
}
如评论中所述。它会忽略编码,并且可能无法始终正常工作。
更好的解决方案
它将未压缩的数据写入destinationPath
FileInputStream fis = new FileInputStream(sourcePath);
FileOutputStream fos = new FileOutputStream(destinationPath);
GZIPInputStream gzis = new GZIPInputStream(fis);
byte[] buffer = new byte[1024];
int len = 0;
while ((len = gzis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
fis.close();
gzis.close();
关于java - 如何从 GZIPInputstream 读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35789253/
我是一名优秀的程序员,十分优秀!