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

What is the cheaper way to get file names in a folder in C#?

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

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

        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]);

None 这两个。两者都创建一个包含所有文件名的 in-memory 数组。

如果内存真的那么稀缺(提示:通常不是),您可以使用Directory.EnumerateFiles遍历所有文件名而不保留整个文件名内存列表:

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

    // do whatever needs to be done with that file name
}