ファイルをコピーするフォルダがあります。私はそれを見て、ディレクトリにコピーされるとすぐにファイルを処理したい。ポーリング(私の現在の実装)か、オンラインで見つけたいくつかのサンプルからのWindows APIを使用したいくつかのテストで、ファイルがディレクトリにあるときを検出できます。C++ディレクトリウォッチング - コピーの検出方法が終了しました。
問題は、ファイルが最初に作成され、まだコピーされていることを検出することです。これにより、(ファイルがまだ完成していないために)エラーによってファイルにアクセスする必要があるプログラムが作成されます。コピーはいつ開始したのですか?私はWindows上でC++を使用していますので、答えはプラットフォームに依存するかもしれませんが、可能であれば、プラットフォームにとらわれない方がよいでしょう。
私はほんの数分前にこの質問を見つけました:http://stackoverflow.com/questions/559659/how-to-know-a-file-is-finished-copyingは、それは私の問題に非常によく似ていますが、「承認"ソリューションはエレガントで機能的ではありません。 – petersaints
コードが管理コンテキスト、つまりシステムサービスとして実行される場合は、変更ジャーナルを使用できます。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa363798%28v=vs.85%29.aspx –
'fread()'/'fwrite()を使用した簡単なコピーの可能性を考えると、 () '私は一般的な解決策はないと思う。非常に堅牢ではありませんが、おそらくオープンハンドルをファイルに追跡することによってですか? –