使用VB.NET,我需要获取网络(NAS)文件夹中所有文件的列表。这似乎真的很慢:
Dim searchFolder as string = "\\NAS\Tool files"
My.Computer.FileSystem.GetFiles(searchFolder, FileIO.SearchOption.SearchAllSubDirectories, sp).ToList
有更快的方法吗?
编辑:我应该提到网络资源有超过100,000个文件。
答案 0 :(得分:0)
一个好问题!我一直处在需要从一个缓慢的网络存储区域迭代近300万个文件,从其中读取一些数据并为每个文件创建数据库文件路径指针的情况。在该用例中,GetFiles的速度过慢。
.GetFiles()的问题在于,它会在开始迭代之前先执行整个检索。
一个简单的调整就是使用具有相同用法的 .EnumerateFiles(),它将找到与模式匹配的第一个文件,并在移至下一个之前立即开始迭代。有关here的更多信息。
根据您在每次迭代中执行的操作,您可能希望迈入线程领域-这有点先进,但可以并行执行操作,从而提高了速度收获。
祝你好运!