【问题标题】:What's the most efficient way to periodically read files from network shared folder?定期从网络共享文件夹中读取文件的最有效方法是什么?
【发布时间】:2012-02-27 23:40:59
【问题描述】:

目标是定期从另一个程序将文件输出到的文件夹中读取文件,然后将文件提供给我的代码的另一部分。

如何在性能与可读性和简单代码之间取得最佳平衡?

(我需要在 C# 和 Java 中完成此操作。因此需要双重标记,(不,这不是家庭作业 :))

【问题讨论】:

  • 在c#中试试FileSystemWatcher
  • 效率取决于文件大小和轮询频率。但是,如果编写器使用临时名称(如“file.dat.partial”)写入文件,并且在完成后将其重命名为“file.dat”,您将避免很多痛苦。重命名在所有操作系统中都是原子的。您的投票应该只查看这些非部分文件并在成功获取后将其删除。

标签: c# java windows file io


【解决方案1】:

在 Java 中,您可以使用监视服务。我相信它使用与 C# 相同的底层系统调用。

http://docs.oracle.com/javase/tutorial/essential/io/notification.html

【讨论】:

    【解决方案2】:

    I/O 是大多数程序的瓶颈,但如果您想要提高性能,您可以做一些事情来提供帮助。一,只在需要时阅读。这可以通过使用 FileSystemWatcher 在文件更改时告诉您来完成。第二个是,如果可能的话,如果您可以在操作未完成的情况下继续,则生成一个新线程来执行 I/O。

    【讨论】:

      猜你喜欢
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-11
      相关资源
      最近更新 更多