我们有一个从远程跨大西洋 Samba 共享中获取文件列表的进程。这自然是缓慢的一面,但是由于我们不仅需要文件名,还需要最后一次写入时间来发现更新,这使情况变得更糟。目录中有很多文件,据我所知,.NET 文件 API 坚持要求我单独要求每个文件。有没有更快的方法来获取我们需要的信息?
问问题
58 次
2 回答
1
您的问题的答案很可能是否定的,至少不是以有意义的方式。
究竟如何枚举代码中的文件几乎无关紧要,因为它们都归结为 Windows 中的相同文件系统 API。不幸的是,没有一个函数可以在一次调用中返回文件详细信息列表*。
因此,无论您的代码是什么样的,在下面的某个地方,它仍在枚举目录内容并为每个文件单独调用特定的文件函数。
如果这确实是个问题,我会考虑将检测逻辑移近文件并定期向您的应用发送结果。
*免责声明:自从我在堆栈中走这么远已经很长时间了,我现在只是在浏览 API 文档,可能有一个新函数可以做到这一点。
于 2016-09-08T12:36:18.017 回答
1
我很想自己找到方法。我有完全相同的问题 - 网络位置缓慢的大量文件,我需要扫描更改。
据我所知,您确实需要一一询问文件属性。
但是,每个文件传输的信息量不应该很高;迂回的请求响应时间可能是主要问题。您可以通过并行运行多个请求来帮助解决这种情况(例如使用Parallel.ForEach
)
于 2016-09-08T10:52:24.203 回答