ネットワーク共有フォルダからファイルを定期的に読み取る最も効率的な方法は何ですか?

目標は、別のプログラムが出力するフォルダからファイルを定期的に読み込んで、そのコードを自分のコードの別の部分に送り込むことです。

パフォーマンスと読みやすく簡単なコードとの間で最良のトレードオフを達成するにはどうすればよいでしょうか?

(私はC#とJavaの両方でこれを達成する必要があります。したがって、ダブルタグ付け(そして、これは宿題ではありません:))

2
C#で FileSystemWatcher を試してみてください。
追加された 著者 Oskar Kjellin,
効率は、ファイルサイズとポーリング頻度に依存します。しかし、作者が 'file.dat.partial'のような一時的な名前でファイルを書き、その完了時にファイル名を 'file.dat'に変更すると、多くの苦痛を避けることができます。名前の変更はすべてのオペレーティングシステムでは不可分です。あなたのアンケートでは、これらの非部分的なファイルだけを見て、フェッチが成功した後で削除してください。
追加された 著者 Teemu Ikonen,
FileSystemWatcherについては、 stackoverflow.com/questions/960318/…
追加された 著者 Kramii,

2 答え

I/Oはほとんどのプログラムにとってはボトルネックですが、パフォーマンスを上げるには、手助けをするためにできることがいくつかあります。 1つは、必要なときにのみ読み込まれます。これは、FileSystemWatcherを使用して、ファイルがいつ変更されたかを伝えることで実現できます。 2つ目は、操作が完了せずに続行できる場合は、可能であればI/Oを実行する新しいスレッドを生成します。

1
追加された

Javaでは、ウォッチサービスを使用できます。私はそれがC#と同じ基本的なシステムコールを使用すると信じています。

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

1
追加された