2012-02-06 8 views
2

目的は、別のプログラムが出力するフォルダからファイルを定期的に読み込んで、そのコードを自分のコードの別の部分に送り込むことです。ネットワーク共有フォルダからファイルを定期的に読み取る最も効率的な方法は何ですか?

パフォーマンスと読みやすく簡単なコードの間のトレードオフをどのようにして達成できますか?

は(私は(となし、これは宿題ではありません:))あなたは時計のサービスを使用することができますJavaでは

+2

c# –

+0

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

+1

FileSystemWatcherについては、http://stackoverflow.com/questions/239988/filesystemwatcher-vs-polling-to-watch-for-changesおよびhttp://stackoverflow.com/questions/960318/filesystemwatcher-fails-to-accessを参照してください。 -network-drive – Kramii

答えて

1

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

関連する問題