我有一个包装ZipEntrys的类,但我很难看到如何编写一个从任何一个ZipEntry返回输入流的方法.我设法编写了一些可以为ZipFile返回输入流数组的东西,但是我需要一种方法来从一个ZipEntry获取输入流.
Ovi*_*ler 29
这个怎么样?
ZipFile zipFile = new ZipFile("file.zip");
ZipEntry zipEntry = zipFile.getEntry("fileName.txt");
InputStream inputStream = zipFile.getInputStream(zipEntry);
Run Code Online (Sandbox Code Playgroud)
小智 24
你没有ZipEntry来源的ZipFile实例吗?如果你这样做,你可以使用ZipFile.getInputStream(ZipEntry).
https://docs.oracle.com/javase/8/docs/api/java/util/zip/ZipFile.html
PS.只是快速查看代码,ZipEntry不是zip文件中底层数据的包装器.就我所见,它只是一个"占位符"(即压缩文件属性而不是数据).实际流是通过ZipFile类中的JNI调用创建的.这意味着我不相信你能以实际的方式做你想做的事.
小智 7
static void printInputStream(File zip) throws IOException
{
ZipInputStream zin = new ZipInputStream(new FileInputStream(zip));
for (ZipEntry zipEntry;(zipEntry = zin.getNextEntry()) != null; )
{
System.out.println("reading zipEntry " + zipEntry.getName());
Scanner sc = new Scanner(zin);
while (sc.hasNextLine())
{
System.out.println(sc.nextLine());
}
System.out.println("reading " + zipEntry.getName() + " completed");
}
zin.close();
}
Run Code Online (Sandbox Code Playgroud)
它在这里找到:
来自ZipInputStream的ZipEntry的getInputStream(不使用ZipFile类)
误解了从zip文件打开的输入流.解决方案:从zip文件ZipInputStream打开输入流zipInputStream = ZipInputStream(new FileInputStream(zipfile),运行循环zipInputStream.getNextEntry().对于每一轮你都有当前输入的输入流(之前为zip文件打开); ..
| 归档时间: |
|
| 查看次数: |
42718 次 |
| 最近记录: |