代码之家  ›  专栏  ›  技术社区  ›  Raj More

子文件夹遍历

  •  1
  • Raj More  · 技术社区  · 14 年前

    我有一套子文件夹3层深超过20k的文件在里面 c:\MyData .

    e:\projects\massdata

    我想签入C和E中已经存在的任何东西(相同的文件夹名、相同的文件名、相同的大小),我想从C中删除。

    遍历此文件夹结构的最佳方式是什么?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Marcus Johansson    14 年前

    递归地遍历每个目录中的所有文件。

    哈希图 . 然后只要检查一个特定的文件相对路径是否存在,当通过C时,如果存在,就删除它。

    http://support.microsoft.com/kb/303974

        2
  •  3
  •   Rune FS    14 年前

    如何使用连接运算符。像这样加入文件名

    public void cleanUp()
        {
            var cFiles = Directory.GetFiles(@"c:\MyData","*.*",SearchOption.AllDirectories);
            var fFiles = Directory.GetFiles(@"e:\projects\massdata","*.*",SearchOption.AllDirectories);
            Func<string, string, Tuple<string, long>> keySelector = (path, root) =>
                new Tuple<string, long>(path.Replace(root, ""), new FileInfo(path).Length);
    
            foreach (var file in cFiles.Join(fFiles, f => keySelector(f,@"e:\projects\massdata"), c => keySelector(c,@"c:\MyData"), (c, f) => c))
            {
                File.Delete(file);
            }
        }
    

    更新后的第二次编辑:

    推荐文章