如何判断"ZipArchiveEntry"是否是目录?

spa*_*cer 22 .net zip system.io.compression

我正在使用.Net 4.5.2 System.IO.Compression.ZipArchive类处理一些第三方ZIP文件,并且一切正常.
但是,我需要从目录条目中分离文件条目,最好不先提取它们.

有没有办法判断ZipArchive条目是否是一个没有提取它的目录?

据我所知,ZipArchiveEntry没有任何属性可以告诉它是文件还是目录.

spa*_*cer 36

好像我真的倾向于回答我自己的问题.

无论如何,答案是直截了当的:

如果ZipArchiveEntry是目录,它的FullName属性将以"/"结尾(例如"some_dir /"),其Name属性将为空字符串("").

如果只有人关心将这些信息放在文档中......

哦,还有一个catch:
如果目录中包含的文件,有没有必须是独立ZipArchiveEntry于它.
所以,如果你正在寻找一个特定的目录,你不能只寻找一个ZipArchiveEntry空的Name或者在结尾处带有"/"的目录FullName- 你必须解析整个树(FullName每个ZipArchiveEntry).

幸运的是,我只需检查所有条目是否只有一个公共目录(所有项目的FullName属性都ZipArchiveEntry以"folder_name /"形式的相同字符串开头).

  • 为了安全起见,我总是检查 FullName 中的“\”和“/”,特别是因为 ZipArchive 本身已损坏,并且会保存您扔给它的任何内容,而不按照标准规定标准化为使用“/”。 (2认同)