我有一个zip存档,其中包含一堆纯文本文件。我想解析每个文本文件的数据。到目前为止,这是我写的内容:
try {
final ZipFile zipFile = new ZipFile(chooser.getSelectedFile());
final Enumeration<? extends ZipEntry> entries = zipFile.entries();
ZipInputStream zipInput = null;
while (entries.hasMoreElements()) {
final ZipEntry zipEntry = entries.nextElement();
if (!zipEntry.isDirectory()) {
final String fileName = zipEntry.getName();
if (fileName.endsWith(".txt")) {
zipInput = new ZipInputStream(new FileInputStream(fileName));
final RandomAccessFile rf = new RandomAccessFile(fileName, "r");
String line;
while((line = rf.readLine()) != null) {
System.out.println(line);
}
rf.close();
zipInput.closeEntry();
}
}
}
zipFile.close();
}
catch (final IOException ioe) {
System.err.println("Unhandled exception:");
ioe.printStackTrace();
return;
}
我需要一个RandomAccessFile来做到这一点吗?我在拥有ZipInputStream的地方迷路了。
不,您不需要RandomAccessFile
。首先获取InputStream
此zip文件条目的数据:
InputStream input = zipFile.getInputStream(entry);
然后将其包装为InputStreamReader
(从二进制解码为文本)和a BufferedReader
(一次读取一行):
BufferedReader br = new BufferedReader(new InputStreamReader(input, "UTF-8"));
然后像往常一样从中读取行。try/finally
像往常一样将所有适当的位包装在块中,以关闭所有资源。
我一直在尝试读取ZIP存档中的PHP文件。我编写了以下代码,它可以读取文本文档和回显而没有错误,但当我用PHP文件测试时,什么都没有出现。那么我可以做些什么来读取PHP文件而不提取呢? 提前感谢!
问题内容: 我需要在zip文件中读取单个文件“ test.txt”的内容。整个zip文件是一个非常大的文件(2gb),其中包含很多文件(10,000,000),因此,提取整个文件对我而言不是可行的解决方案。如何读取单个文件? 问题答案: 尝试使用包装器: 您也可以使用:
问题内容: 我的用例要求我打开一个txt文件,例如abc.txt,该文件位于zip归档文件中,该归档文件包含以下格式的键值对: key1 = value1 key2 = value2 ..依此类推,每个键值对都位于新行中。我必须更改与某个键对应的一个值,然后将文本文件放回存档的新副本中。如何在Java中执行此操作? 到目前为止,我的尝试: 问题答案: 您几乎完全正确。一种可能的原因,该文件显示为已
问题内容: 我试图从战争档案中读取文本文件,并在运行时将其内容显示在facelets页面中。我的文件夹结构如下 +战争档案> +资源> +电子邮件> + file.txt 我尝试使用以下代码读取resources / email / file.txt文件夹中的文件 但是问题是当我运行上面代码的方法时,会抛出A。我也尝试使用以下代码行获取文件,但未成功 我仍然得到。这是怎么引起的,我该如何解决? 问
在Eclipse中为我的XXXXClient(web服务)项目运行Maven安装时,我反复收到以下消息:“项目”XXXXClient“中的required Library:'x:/xxxx/xxxx/.m2/repository/javax/enterprise/CDI-API/1.0-sp4-redhat-4/CDI-API-1.0-sp4-redhat-4.jar'无法读取或不是有效的ZIP文
问题内容: 我的情况是我有一个包含一些文件(txt,png,…)的zip文件,我想直接按它们的名称读取它,我已经测试了以下代码,但没有结果(NullPointerExcepion): resources 是一个包, zipfile 是一个zip文件。 问题答案: 如果您可以确定您的zip文件永远不会打包在另一个jar中,则可以使用以下方法: 要么: 否则,您的选择是: 使用ZipInputStre