2012-02-06 48 views
2

目标是定期从其他程序输出的文件夹中读取文件,然后将这些文件提供给我的代码的另一部分。定期从网络共享文件夹读取文件的最有效方法是什么?

如何在性能和可读性和易用代码之间进行最佳折衷来实现这一目标?

(我需要在C#和Java的。因此,双标记来实现这一点,(不,这不是功课:))

+2

尝试c#中的FileSystemWatcher# – 2012-02-06 13:54:16

+0

效率取决于文件大小以及您对它们进行轮询的频率。但是,如果作者用临时名称'file.dat.partial'写文件,并且完成后将其重命名为'file.dat',则可以避免很多痛苦。重命名在所有操作系统中都是原子的。您的投票只应查看这些非部分文件并在成功获取后删除它们。 – 2012-02-06 13:56:46

+1

对于FileSystemWatcher,请参阅http://stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-changes和http://stackoverflow.com/questions/960318/filesystemwatcher-fails-to-access - 网络驱动器 – Kramii 2012-02-06 13:57:10

回答

1

I/O是大多数程序的瓶颈,但如果你要性能有两件事情可以做,以帮助。一,只有在你需要时才能阅读。这可以通过使用FileSystemWatcher来告诉你文件何时更改。第二,如果可能的话,产生一个新的线程来执行I/O,如果你可以继续操作没有完成。

相关问题