一)Zip是一個壓縮文件格式,而gzip的不是。因此,除非(例如)你的gz文件是壓縮的tar文件,否則一個條目迭代器沒什麼意義。你想要的可能是:
File outFile = new File(infile.getParent(), infile.getName().replaceAll("\\.gz$", ""));
b)你只想解壓文件嗎?如果不是,您可以使用GZIPInputStream並直接讀取文件,即不需要中間解壓縮。
但是好的。假設你真的只有想要解壓縮文件。如果是的話,你很可能在此:
public static File unGzip(File infile, boolean deleteGzipfileOnSuccess) throws IOException {
GZIPInputStream gin = new GZIPInputStream(new FileInputStream(infile));
FileOutputStream fos = null;
try {
File outFile = new File(infile.getParent(), infile.getName().replaceAll("\\.gz$", ""));
fos = new FileOutputStream(outFile);
byte[] buf = new byte[100000];
int len;
while ((len = gin.read(buf)) > 0) {
fos.write(buf, 0, len);
}
fos.close();
if (deleteGzipfileOnSuccess) {
infile.delete();
}
return outFile;
} finally {
if (gin != null) {
gin.close();
}
if (fos != null) {
fos.close();
}
}
}
嗨,我可以讀取文件,而不需要解析。我想要像逐行閱讀一樣。 而且,這些文件的長度/行不能只有80個字符。 BufferedReader是我用過的工具。但是,它沒有GzInputStream的構造函數。 – 2009-06-14 21:16:05