2016-10-24 276 views
4

我正在使用.Net 4.5.2 System.IO.Compression.ZipArchive類處理一些第三方ZIP文件,並且所有工作都很好。
但是,我需要區分文件條目目錄條目,最好不先提取它們。如何判斷「ZipArchiveEntry」是否是目錄?

有沒有辦法告訴ZipArchive條目是否是一個目錄而不提取它?

據瞭解,ZipArchiveEntry沒有屬性可以告訴它是否是文件或目錄。

回答

10

好像我真的很喜歡回答我自己的問題。

無論如何,答案是簡單的:

如果ZipArchiveEntry是一個目錄,這將有其FullName屬性以「/」(如「some_dir /」)及其Name財產結束將是空字符串(「」)。

如果只有一個人關心把這些信息在文檔中......

哦,還有就是一個catch
如果目錄中包含的文件,也不會沒有必須是單獨爲ZipArchiveEntry
所以,如果你正在尋找一個特定的目錄,你不能只尋找一個ZipArchiveEntry與空Name或與「/」在FullName結束 - 你必須解析整個樹(FullName爲每ZipArchiveEntry)。

幸運的是,我只需要檢查是否有一個共同目錄的所有條目(FullName所有ZipArchiveEntry項目的屬性shoud以「folder_name /」形式的相同字符串開頭)。