Windows(分享)

时间:2015-05-27 00:02:58

标签: c# windows nas cifs fileshare

我有一个巨大的远程共享文件路径列表,我需要检查它是否存在。 示例输入:

\服务器\ folder1中\ file1的
\服务器\文件夹1 \文件2
\服务器\文件夹2 \文件3

我们目前只是对每个文件执行File.Exists(基本上使用FindFirstFile WinAPI),但它很慢。 有没有更有效的方法呢?有什么方法可以并行化吗?

1 个答案:

答案 0 :(得分:1)

使用I / O操作通常很慢而且很昂贵 我建议一起使用不同的方法:

在程序初始化时获取文件列表一次,并将其存储在数据库中。

使用FileSystemWatcher监视路径中文件的创建(如果您有不同的父目录或不同的远程计算机,您可能需要为每个目录使用FileSystemWatcher),然后在每个创建的数据库上更新数据库,已删除并重命名相关文件的事件。

然后,您需要做的就是获取存在的文件是一个简单的SQL查询,与在大型列表上进行迭代并测试File.Exist

相比,它会快速闪存