gpt4 book ai didi

c# - GetFiles 在网络驱动器上太慢

转载 作者:太空宇宙 更新时间:2023-11-03 23:34:10 26 4
gpt4 key购买 nike

我需要每天从网络驱动器复制文件。为此,我尝试了以下方法:

    var dir = new DirectoryInfo(@"Z:\");

var filesA300 = dir.GetFiles().Where(x => x.FullName.Contains("A300")
&& x.LastWriteTime.Date == DateTime.Now.Date).ToList();

由于驱动器有数千个文件,程序在有用的时间内不会执行任何操作。

我有什么选择?

最佳答案

GetFiles 在开始过滤之前返回所有文件,

您可以使用 EnumerateFiles这更懒惰,可以让你链接你的 where 查询。您还可以过滤特定的文件类型

引用上面的链接

The EnumerateFiles and GetFiles methods differ as follows:

  • When you use EnumerateFiles, you can start enumerating the collection of FileInfo objects before the whole collection is returned.

  • When you use GetFiles, you must wait for the whole array of FileInfo objects to be returned before you can access the array.

你最好在一个单独的线程上执行这个操作,这样你就不会阻塞你的主应用程序线程,尽管这取决于应用程序设计的其他目的(仍然可能是值得的,所以你可以停止它认为它没有反应)。

关于c# - GetFiles 在网络驱动器上太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31134050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com