2012-12-12 74 views
16

ZIP條目存儲條目的完整路徑名稱,因爲(我確信下一部分)ZIP歸檔文件不會被組織爲目錄。元數據包含有關應如何存儲文件(目錄內)的信息。ZipEntry的路徑名稱的文件分隔符?

如果我在Windows中創建ZIP文件,當我在另一個操作系統中解壓縮數據時,例如Mac OS X中,文件結構仍然像以前一樣在Windows中。這是因爲解壓縮器的設計是爲了解決這個問題,還是因爲ZIP中的文件分隔符是標準的?

我在問這是因爲我試圖使用壓縮文件的名稱在ZIP文件中找到一個條目。但是,我應該使用哪個文件分隔符使其在Windows以外的系統中工作?

我正在使用Java,並且ZipEntry的方法:.getName()爲我提供了使用Windows文件分隔符\的路徑。如果我使用java File.separator分隔符使其在另一個操作系統上工作,是否足夠了?或者我將不得不嘗試使用每個可能的分隔符來查找我的文件?

+0

所以當你解壓你不想用絕對路徑解壓文件? – vels4j

+0

不,問題是,當我搜索文件時,我應該如何在我的路徑中設置文件分隔符,以使其工作,而不管操作系統是我的應用程序的平臺。 – Ordiel

回答

11

文件分隔符取決於創建zip文件的應用程序。有些應用程序使用系統文件分隔符,而有些則使用「文明」正斜槓「/」。所以,如果你正在創建zip文件然後使用它,那麼你可以簡單地使用正斜槓作爲文件分隔符。如果在其他地方創建了zip文件,那麼您應該知道使用了哪個分隔符。我不知道一個簡單的方法,但你可以使用暴力方法,並在你進步時檢查兩個分隔符類型。

某些應用程序(特別是自定義zip創建代碼)可以在不同的zip條目上混合分隔符,因此不要忘記查看每個條目。

5

.zip file specification狀態:

4.4.17.1文件的名稱,可選相對路徑。存儲的路徑必須不包含驅動器或 設備字母或前導斜槓。所有斜槓 必須是正斜槓'/'而不是 反斜槓'\'以便與Amiga 和UNIX文件系統等兼容。如果輸入來自標準 輸入,則不存在文件名字段。

相關問題