私は Java の専門家ではありませんが、私が作成しているプログラムは高スループットを処理するものです。そこで、ちょっとクラウドソーシングして意見を集めてみようと思いました。これが状況です。
Java プロセスは、処理するファイルのディレクトリを監視します。これらのファイルはペアになります (格納されるデータ ファイルとメタ情報を含む xml ファイルがカタログ化されます)。そのため、現在のファイルのリストを取得し、必要なツインを確認してから処理する必要があります。
ファイルは常に一致するファイル名を持ち、ファイル拡張子のみが異なります。例: filename1.jpg filename1.xml filename2.jpg filename2.xml
これまで考えた選択肢は3つ。
File.List(FileNamefilter) 呼び出しで FilenameFilter を使用して、ファイル名を持つファイルの総数が 1 より大きいかどうかを確認します。
2 つの filenamefilters を使用して、.xml を含むファイルと .xml を含まないファイルのリストを生成し、XML 以外のファイル リストを ArrayList に変換して、Collections.binarySearch() を呼び出します。
.xml 拡張子のないすべてのファイルのリストを生成し、このリストを、ファイル名に基づいて .xml ファイルを想定するキーと値のペアのハッシュマップのキーとして使用します。次に、ハッシュ リストを実行し、処理する前に .xml ツインの存在を確認します。
何かご意見は?
編集/コメント
提案を確認し、いじくり回した後、XML ファイルをリストするファイルとリストしないファイルの 2 つの FilenameFilter を使用することにしました。XML ファイルのリストから xml 拡張子が取り除かれ、ハッシュにダンプされます。次に、データ ファイルのリストを繰り返し処理し、hashlist.contains() を呼び出して、続行する前にハッシュセットに一致するものが存在するかどうかを確認します。
不完全なファイルの処理については、次のような懸念があります。コメントで述べたように、新しく書き込まれたファイルは、その書き込みが完了するまで非書き込みプロセスには表示されないと想定しています(新しいファイル、編集用に開かれていません)