代码之家  ›  专栏  ›  技术社区  ›  Ranhiru Jude Cooray

使用点网zip列出目录中的所有文件?

  •  0
  • Ranhiru Jude Cooray  · 技术社区  · 14 年前

    在dot-net-zip中,我是否可以使用它列出特定目录中所有文件的名称?例如,我可以指定directory1并获取file3和file4等

    ZipFile
    -------
    
    File1
    File2
    Directory1
         File3
         File4
    Directory2
         File5
         File6
    

    ZipFile对象只有个条目、已排序的条目和条目文件名…

    有人吗?Cheeso?:)

    1 回复  |  直到 14 年前
        1
  •  1
  •   Cheeso    14 年前

    不,是的。没有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文件中作为容器输入。目录条目和文件条目之间没有容器关系。判断文件条目是否“属于”特定目录的唯一方法是检查文件条目的全名。如果条目的名称以相关目录的名称开头,则条目在目录中为“in”。