gpt4 book ai didi

java - 如何用 Java 打印 tar.gz 文件的内容?

转载 作者:行者123 更新时间:2023-11-30 09:50:37 25 4
gpt4 key购买 nike

我必须实现一个允许打印 tar.gz 文件中所有文件内容的应用程序。

例如:
如果我在名为 testx 的文件夹中有三个这样的文件:
A.txt 包含文字“上帝保佑女王”
B.txt 包含字样“Ubi maior, minor cessat”
C.txt.gz 是一个用 gzip 压缩的文件,其中包含带有“Hello America!!”字样的文件 c.txt

于是对testx进行压缩,得到压缩后的tar文件:testx.tar.gz。

因此,对于我的 Java 应用程序,我想在控制台中打印:
《天佑女王》
“Ubi maior,minor cessat”
“你好美国!!”

我已经实现了 ZIP 版本并且运行良好,但保留了来自 apache ant 的 tar 库 http://commons.apache.org/compress/ , 我注意到它不像 ZIP java utils 那样容易。

有人可以帮我吗?

我已经开始在网上寻找如何实现我的目标,所以我有以下代码:

GZIPInputStream gzipInputStream=null;
gzipInputStream = new GZIPInputStream( new FileInputStream(fileName));
TarInputStream is = new TarInputStream(gzipInputStream);
TarEntry entryx = null;

while((entryx = is.getNextEntry()) != null) {
if (entryx.isDirectory()) continue;
else {
System.out.println(entryx.getName());
if ( entryx.getName().endsWith("txt.gz")){
is.copyEntryContents(out);
// out is a OutputStream!!
}
}
}

所以在 is.copyEntryContents(out) 行中,可以将通过 OutputStream 的流保存在文件中,但我不想要它!在保留第一个条目 ZipEntry 后的 zip 版本中,我们可以从压缩的根文件夹 testx.tar.gz 中提取流,然后创建一个新的 ZipInputStream 并使用它来获取内容。

是否可以使用 tar.gz 文件执行此操作?

谢谢。

最佳答案

在网上冲浪时,我遇到了一个有趣的想法:http://hype-free.blogspot.com/2009/10/using-tarinputstream-from-java.html .

将我们的 TarEntry 转换为 Stream 后,我们可以采用与 Zip 文件相同的想法,例如:

InputStream tmpIn = new StreamingTarEntry(is,  entryx.getSize());
// use BufferedReader to get one line at a time
BufferedReader gzipReader = new BufferedReader(
new InputStreamReader(
new GZIPInputStream(
inputZip )));

while (gzipReader.ready()) { System.out.println(gzipReader.readLine()); }
gzipReader.close();

因此,使用此代码,您可以打印文件 testx.tar.gz 的内容 ^_^

关于java - 如何用 Java 打印 tar.gz 文件的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com