Kap*_*l D 6 java compression gzip
我有100个.gz文件,我需要解压缩.我有几个问题
a)我使用http://www.roseindia.net/java/beginners/JavaUncompress.shtml中给出的代码来解压缩.gz文件.它的工作正常.任务: - 有没有办法获取压缩文件的文件名.我知道Java的Zip类给出了entery文件的枚举工作.这可以给我存储在.zip文件中的文件名,大小等.但是,对于.gz文件我们是否一样?或者文件名与filename.gz相同,并删除了.gz.
b)是否有另一种优雅的方法来通过调用java代码中的实用程序函数来解压缩.gz文件.就像从java类调用7-zip应用程序一样.然后,我不必担心输入/输出流.
提前致谢.卡皮尔
fre*_*rin 10
a)Zip是一种存档格式,而gzip则不是.因此,除非(例如)你的gz文件是压缩的tar文件,否则入口迭代器没有多大意义.你想要的可能是:
File outFile = new File(infile.getParent(), infile.getName().replaceAll("\\.gz$", ""));
Run Code Online (Sandbox Code Playgroud)
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12532 次 |
最近记录: |