創建一個輸入流我有包裝ZipEntrys一類,但我掙扎,看我怎麼可以那麼寫,返回從任何一個ZipEntry的輸入流的方法。我設法寫了一些可以返回ZipFile輸入流數組的東西,但是我需要一種方法從一個ZipEntry中獲取輸入流。如何從一個ZipEntry的
回答
你沒有從中ZipEntry的是源zip文件實例?如果你可以使用ZipFile.getInputStream(ZipEntry)。
https://docs.oracle.com/javase/8/docs/api/java/util/zip/ZipFile.html
PS。只需快速查看代碼,ZipEntry不是zip文件中底層數據的包裝。據我所知,它只是一個條目的「佔位符」(即壓縮文件屬性而不是數據)。實際的流是通過ZipFile類中的JNI調用創建的。這意味着我不相信你能夠以實際的方式做你想要做的事情。
馬爾科姆,感謝您的幫助,我剛剛找到了這個方法。我現在的問題是最初打開zip文件的代碼(當你做ZipFile zip = new ZipFile(「path」);)時,然後關閉它。如果我想要,我可以阻止它關閉它,但是我想知道 - 不關閉拉鍊/罐子的後果是什麼?顯然,如果我刪除了close()命令,我會留下一個方法,以便用戶稍後關閉它,但我想知道如果用戶忘記了會發生什麼 - 只是貪婪的內存? 我知道這是不是爲數據的包裝 - 我正在寫,是對付郵編/ Jar文件的包裝。 – Stephen 2009-11-12 16:28:44
讓它開着對我來說不是一個好主意。同樣如此,推遲關閉您的解決方案的用戶責任。一個選項(可能 - 我猜你正在解決的問題)是包裝ZipEntry幷包含它在包裝類中的ZipFile句柄。這似乎有點沉重,但意味着您可以在需要時打開\關閉流包裹的zip條目。 – 2009-11-13 05:49:06
這個怎麼樣?
ZipFile zipFile = new ZipFile("file.zip");
ZipEntry zipEntry = zipFile.getEntry("fileName.txt");
InputStream inputStream = zipFile.getInputStream(zipEntry);
+1代碼片段。 – 2009-11-12 15:45:19
不幸的是,創建一個ZipFile的新實例泄漏1.4.2_12中的文件句柄 – 2010-09-20 10:37:05
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();
}
有人在這裏找到:
getInputStream for a ZipEntry from ZipInputStream (without using the ZipFile class)
誤區什麼是從壓縮文件打開輸入流。 解決方案:從zip文件 ZipInputStream zipInputStream = ZipInputStream(new FileInputStream(zipfile)
, 運行週期zipInputStream.getNextEntry()
開放的輸入流。 對於每一輪,您都有當前輸入的輸入流(之前爲zip文件打開); ..
- 1. ZipEntry的RandomAccessFile(java)
- 2. ZipEntry中的ZipInputStream.read
- 3. 如何獲取ZipEntry的簡單名稱?
- 4. 我如何閱讀更多的信息ZipEntry(s)內使用sharpZipLibrary ZipEntry?
- 5. 如何從嵌套存檔中讀取ZipEntry CRC(zip中的zip)
- 6. 如何通過ZipEntry遞歸循環
- 7. ZipEntry到文件
- 8. Java:從ZipEntry獲取文件對象
- 9. 的java:變化的ZipEntry名
- 10. 如何使用ZipEntry讀取位於另一個zip文件中的一個zip文件中的數據?
- 11. ZipEntry to stream with monodroid
- 12. ZipEntry文件名的編碼?
- 13. Java ZipInputStream不能讀取整個ZipEntry
- 14. 使用Java壓縮csv文件會拋出一個「至少有一個ZipEntry」
- 15. 如何訪問ZipEntry中的文件夾內的文件
- 16. 枚舉之間的區別<?擴展ZipEntry>和枚舉<ZipEntry>?
- 17. 是有可能從zipinputstream得到的ZipEntry的InputStream的?
- 18. SharpZipLib ZipEntry如何更改zip文件的名稱?
- 19. ZipEntry getEntry()總是返回null
- 20. ZipEntry UTF-8字符集
- 21. Android - 迭代通過Zipentry
- 22. ZipEntry到字節數組
- 23. 的ZipEntry得到的參數檢查
- 24. 的Java的ZipEntry和Zipoutputstream目錄
- 25. 如何從一個的SelectList
- 26. 的ZipEntry()和轉換波斯名
- 27. 如何從一個單一的變量
- 28. 如何產生一個從另一個
- 29. 的Java(ZipEntry的) - 如果文件名包含捷克字符(CZR等),而讀下一個入口
- 30. 如何從另一個
請看:http://stackoverflow.com/questions/3233555/is-it-possible-to-get-a-zipentrys-inputstream-from-a-zipinputstream – diyism 2012-06-21 03:45:20