我想读取一个thing文件(或者一个xy文件)的内容,但这是一回事。我所做的或多或少是这样的:
TarArchiveInputStream tarInput = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream("c://temp//test.tar.gz")));
TarArchiveEntry currentEntry = tarInput.getNextTarEntry();
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
while (currentEntry != null) {
File f = currentEntry.getFile();
br = new BufferedReader(new FileReader(f));
System.out.println("For File = " + currentEntry.getName());
String line;
while ((line = br.readLine()) != null) {
System.out.println("line="+line);
}
}
if (br!=null) {
br.close();
}
但是当我调用TarArchiveEntry
的getFile
方法时,我得到null。
我正在使用Apache公共压缩1.8.1
您不能使用TarArchiveEntry的getFile。当您在tar文件中压缩文件时,该getter仅用于相反的操作。
相反,您应该直接从TarArchiveInputStream读取。它会负责将“文件”的内容动态地解压缩并返回给你。
例如(未测试代码,YMMV):
TarArchiveInputStream tarInput = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream("c://temp//test.tar.gz")));
TarArchiveEntry currentEntry = tarInput.getNextTarEntry();
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
while (currentEntry != null) {
br = new BufferedReader(new InputStreamReader(tarInput)); // Read directly from tarInput
System.out.println("For File = " + currentEntry.getName());
String line;
while ((line = br.readLine()) != null) {
System.out.println("line="+line);
}
currentEntry = tarInput.getNextTarEntry(); // You forgot to iterate to the next file
}
我有一个学校作业,要求我接受一个输入流,并使用apache commons压缩库将其压缩成一个字节数组,格式有5种(根据用户规范)。这5种格式是:ZIP、JAR、SEVENZ、BZIP2和gzip。我编写了以下方法以JAR格式压缩输入流,但得到了一个带有字符串“no current entry”的illegalStateException。
我正在尝试使用我从apache共享资源压缩示例网页获得的以下代码,以使用sevenZ类创建一个zip文件,希望它的压缩速度比常规的java zip更快。这就是我的代码的样子 我得到了这个错误,看起来很不相关 线程mainjava.lang.NoClassDefFoundError中的异常:org.tukaani.xz.FilterOptionsjava.lang.J9VMInternals.ver
我正在使用commons-compress来处理tarball文件,并且注意到即使不是tar的文件似乎也会被处理。这是为什么--有没有更好的库来检测有效的tar文件 是一个CSV文件,测试失败,因为te.isFile()显然返回true。getName()似乎返回CSV的内容。这是不是我错误地使用了包的一个错误--我希望InputStream不能成功地转换为TarchiveEntry
我正在开发一个从tar获取信息的软件。gz文件,我正在使用Apache commons压缩库。但我得到了以下错误: 样品焦油。使用的gz文件是eclipse-jee-luna-SR1-linux-gtk-x86_64.tar.gz 下面是使用 lib 的类:
我正试图从压缩的csv文件中获取数据。有没有一种方法可以做到这一点,而不解压整个文件?如果没有,我如何解压文件并有效地读取它们?
我在使用共享资源压缩库创建目录的tar.gz时遇到了一个问题。我有一个目录结构如下。 我正在使用以下代码进行压缩。它运行良好,无一例外。但是,当我尝试解压缩该 tar.gz时,我得到一个名为“子DirTo压缩”的文件。它的大小是正确的,因此文件在焦油过程中清楚地相互附加。所需的输出将是一个目录。我不知道我做错了什么。任何明智的共享资源压缩器都可以让我走上正确的道路吗?