在 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
}
我正在尝试找到一种消耗更少内存的方法来从文件夹中获取文件名。
我试过这两种方法(都有效),但不知道哪个更便宜:
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
}