删除百万个文件的最快方法

时间:2016-07-07 10:41:12

标签: c# .net filesystems

我有一个字符串列表,它们是相对路径。我还有一个字符串,其中包含这些文件的根路径。现在我正在删除它们:

foreach (var rawDocumentPath in documents.Select(x => x.RawDocumentPath))
{
    if (string.IsNullOrEmpty(rawDocumentPath))
    {
        continue;
    }
    string fileName = Path.Combine(storagePath, rawDocumentPath);
    File.Delete(fileName);
}

问题是我为每个文件调用了Path.Combine,而且速度很慢。 我怎样才能加快这段代码的速度?我无法删除整个文件夹,我无法更改当前目录(因为它会影响整个程序)...

我需要像类一样可以快速删除指定目录中的几个文件。

1 个答案:

答案 0 :(得分:1)

如果你的磁盘可以处理它,平行化应该有很多帮助:

documents.AsParallel().ForAll(
    document =>
    {
        if (!string.IsNullOrEmpty(document.RawDocumentPath))
        {
            string fileName = Path.Combine(storagePath, document.RawDocumentPath);
            File.Delete(fileName);
        }
    });