使用Dot Net Zip列出目录中的所有文件?

时间:2010-08-03 22:30:21

标签: compact-framework filenames dotnetzip

我是否可以使用Dot Net Zip列出特定目录中文件的所有名称?例如,我可以指定Directory1并获取File3和File4等

ZipFile
-------

File1
File2
Directory1
     File3
     File4
Directory2
     File5
     File6

ZipFile对象只有条目,条目排序和条目文件名...

任何人?,Cheeso? :)

1 个答案:

答案 0 :(得分:1)

不,是的。没有EntriesInDirectory集合。但是,在字符串比较中选择“属于”特定目录中的条目是一件简单的事情。

在LINQ中,它看起来像这样:

var selection = from e in zip.Entries 
    where e.FileName.StartsWith(directoryName)
    select e;

在for循环中,它看起来像这样:

var list = new List<ZipEntry>();
foreach (var e in zip.Entries) {
  if (e.FileName.StartsWith(directoryName)) {
    list.Add(e);
  }
}

编辑

您可能需要针对区分大小写进行转换。在Windows上,大小写在文件名中没有意义。

进一步说明:zip格式不会将zip文件中的目录条目视为容器。目录条目和文件条目之间没有容器关系。判断文件条目“属于”特定目录的唯一方法是检查文件条目的全名。如果条目的名称以相关目录的名称开头,则该条目位于目录中。