在C#中读取或写入文件时如何完成搜索

时间:2015-08-19 21:06:50

标签: c# asp.net file-io

我在我的应用程序中有以下代码,如本文末尾所示。

当目录C:\xyz\vb\为空或文件很少时,代码很快,但我不确定它在高流量网站中是否仍会如此快,其中不仅有很多用户会访问此文件夹下的文件,但此文件夹下可能还有许多文件。没有两个用户可以同时访问同一个文件,但上面的文件夹中可能有数千个这样的用户文件。

问题

以下代码中的每个方法 - ReadAllTextWriteAllLines如何执行搜索给定文件,并且随着文件数量的增加,读取和写入的速度会变慢?我最初的猜测是这些方法需要找到给定的文件,因此随着文件数量的增加会变慢。

//read a give file
string text = System.IO.File.ReadAllText(@"C:\xyz\vb\WriteText.txt");
//write to a given file
System.IO.File.WriteAllLines(@"C:xyz\vb\WriteLines.txt", lines);

1 个答案:

答案 0 :(得分:2)

当您在C#中进行文件系统调用时,.NET Framework正在调用Windows OS API调用。意思是,C#没有“搜索”您正在请求的文件,它只是将您的请求传递给本机Windows API调用,后者又将其传递给文件系统。 NTFS在查找文件方面非常有效。它不会遍历目录。相反,它将文件存储在基于B树的索引中。这意味着找到您请求的文件几乎是即时的。可以这么说,一个包含几千个文件的目录由NTFS非常有效地处理。您会注意到它之间几乎没有区别,如果它是目录中唯一的文件。

有关NTFS如何进行索引的更深入解释,请参阅this link