ディレクトリ内のファイルを一覧表示するときに奇妙な動作に気付きました。私の状況では、データベースに保存するtxtファイルのリストがあり、それらのデータファイルに対応して、dbのメタプロパティとして関連付けられている各txtのタグを含むxmlファイルがあります。
ディレクトリからファイルを一覧表示し、xml ファイルを読み取ると、ストリームがどのように変化し、既に db に追加されているファイルが再度一覧表示されます。ファイル名はデータベース内の ID であり、一意です。それらを再リストすると、主キーの制約に違反します。
リスティングが乱れる理由を知りたいですか?
try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(folderReader,filter){
for (Path file : directoryStream) {
// Read XML
// add txt file to database
// attach meta props to that file
}
}catch(IOException ex){}
現在、一部のファイルでは正常に動作しますが、すでにリストされているファイルが再び戻ってくることがあります。同様に 1.txt が処理されて db に保存されましたが、後のループで再びリストされます。