我有一个巨大的远程共享文件路径列表,我需要检查它是否存在。 示例输入:
\服务器\ folder1中\ file1的
\服务器\文件夹1 \文件2
\服务器\文件夹2 \文件3
等
我们目前只是对每个文件执行File.Exists(基本上使用FindFirstFile WinAPI),但它很慢。 有没有更有效的方法呢?有什么方法可以并行化吗?
答案 0 :(得分:1)
使用I / O操作通常很慢而且很昂贵 我建议一起使用不同的方法:
在程序初始化时获取文件列表一次,并将其存储在数据库中。
使用FileSystemWatcher
监视路径中文件的创建(如果您有不同的父目录或不同的远程计算机,您可能需要为每个目录使用FileSystemWatcher),然后在每个创建的数据库上更新数据库,已删除并重命名相关文件的事件。
然后,您需要做的就是获取存在的文件是一个简单的SQL查询,与在大型列表上进行迭代并测试File.Exist