0

したがって、私のシナリオは次のとおりです。

ディレクトリがあり、X秒ごとにJavaアプリケーションがディレクトリをポーリングして、新しいファイルが追加されているかどうかを確認します。新しいファイルが検出された場合(不明なFTP実装によって転送される可能性があります)、ファイルを調べて、特定の文字列(つまり、「allData」)で終わっているかどうかを確認します。文字列が存在する場合、ファイルは正常に転送されたと見なされるため、必要に応じて文字列の解析を開始します。

したがって、問題は、転送されるファイルが非常に大きく(数GB)、ファイル全体が完全に転送される前に解析を開始したくないということです(これは「allData」文字列で示されます)。また、この文字列のファイルを調べたい場合は、検索を高速でメモリ消費量を少なくする必要があります。このため、ファイル記述子をファイルの終わり近くに設定するRandomAccessFileオブジェクト(読み取り専用モード)を使用し、そのFDとBufferedReaderを使用して検索を開始します。

私の質問は、Javaアプリケーションでファイルを開くと、実行中のファイル転送に影響するかどうかです。これは、ファイルが転送される前に、アプリケーションが(ファイル全体が転送されたかどうかを判断するために)読み取りを開始する場合があるためです。そのような実装で何か厄介なことが起こりますか?

4

1 に答える 1

2

リモートエンドにftpを使用してファイルを転送させ、リモートエンドにファイルの名前を「filename.file.incomplete」から「filename.file」に変更させます。次に、「incomplete」がないものをポーリングできます。終わり。

于 2012-06-07T20:13:50.433 に答える