gpt4 book ai didi

文件更改时 Java NIO 2 DirectoryStream 列表也会更改

转载 作者:行者123 更新时间:2023-12-01 12:52:31 25 4
gpt4 key购买 nike

在列出目录中的文件时,我注意到一个奇怪的行为。我的情况是我有一个保存在数据库中的txt文件列表,与这些数据文件相对应的是xml文件,其中包含每个txt的一些标签,这些标签与其在db中的元属性相关联。

当我从目录中列出文件并读取 xml 文件时,流如何更改并再次列出已添加到数据库中的文件。文件名在我的数据库中是 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 被处理并保存在数据库中但在稍后的循环中它再次列出。

最佳答案

您的最后一个comment似乎准确地描述了这里发生的事情。

我猜 DirectoryStream 添加(或不添加)新保存的文件,而不检查其先前的列表。

在这种情况下,将 DirectoryStream 中的条目添加到另一个 Iterable 甚至 Set 可能是个好主意(例如 >HashSet),然后再处理它们,并检查它们是否在 Set 中(Set#add 因此返回 boolean 值)。

关于文件更改时 Java NIO 2 DirectoryStream 列表也会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24115698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com