获取批处理中的完整目录信息的方法

时间:2016-09-08 10:38:52

标签: c# system.io.file

我们有一个进程可以从远程跨大西洋Samba共享中获取文件列表。这自然是在缓慢的一面,但是由于我们不仅需要文件的名称,我们需要最后的写入时间来发现更新。目录中有相当多的文件,据我所知,.NET文件API坚持让我单独询问每个文件。是否有更快的方式获取我们需要的信息?

2 个答案:

答案 0 :(得分:1)

你的问题的答案很可能是否定的,至少不是有意义的。

您在代码中枚举文件的方式几乎无关紧要,因为它们都归结为Windows中的相同文件系统API。不幸的是,没有函数在一次调用中返回文件详细信息列表*。

因此,无论您的代码是什么样的,在下面的某处,它仍然会枚举目录内容并为每个文件单独调用特定的文件函数。

如果这确实是一个问题,我会考虑将检测逻辑移近文件,并定期向您的应用发送结果。

*免责声明:我已经很长一段时间了,因为我已经在堆栈中这么远了,我现在只是在浏览API文档,可能会有一个新功能正是这样做的。

答案 1 :(得分:0)

我很想找到自己的方式。我有完全相同的问题 - 在慢速网络位置上有大量文件,我需要扫描更改。

据我所知,您需要逐个询问文件属性。

但每个文件传输的信息量不应该很高;环形交叉口请求 - 响应时间可能是主要问题。您可以通过并行运行多个请求来帮助解决问题(例如,使用Parallel.ForEach