在 C# 中获取文件夹中的文件名的更便宜的方法是什么?

Jac*_*cky 0 c# memory-consumption

我正在尝试找到一种消耗更少内存的方法来从文件夹中获取文件名。

我尝试了这两种方法(都有效),但不知道哪个更便宜:

        string[] files;

        //method 1
        files = new DirectoryInfo(root)
            .GetFiles()
            .Select(f => f.Name).ToArray();

        //method 2
        files = Directory.GetFiles(root);
        for (int i = 0; i < files.Length; i++)
            files[i] = Path.GetFileName(files[i]);
Run Code Online (Sandbox Code Playgroud)

Hei*_*nzi 6

这两个都没有。两者都会创建一个包含所有文件名的内存数组。

如果内存确实那么稀缺(提示:通常不是),您可以使用Directory.EnumerateFiles它来迭代所有文件名,而不将整个列表保留在内存中:

foreach(var path in Directory.EnumerateFiles(root))
{
    var fileName = Path.GetFileName(path);

    // do whatever needs to be done with that file name
}
Run Code Online (Sandbox Code Playgroud)

  • “(提示:通常不是)”。我完全同意。*过早的优化是万恶之源。* (3认同)