2016-10-24 235 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 /”形式的相同字符串开头)。