gpt4 book ai didi

java - 迭代 DirectoryStream 并同时更改目录的内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:59:21 32 4
gpt4 key购买 nike

DirectoryStream的文档中明确指出:

The iterator is weakly consistent. It is thread safe but does not freeze the directory while iterating, so it may (or may not) reflect updates to the directory that occur after the DirectoryStream is created.

在我的机器上,我在 Debug模式下对一个目录执行了一次简单的迭代。在迭代完成之前,我中断了执行,将一个文件添加到正在迭代并恢复的目录中。迭代没有看到额外的文件。

我的问题:在什么情况下迭代反射(reflect)目录内容的更新?不幸的是,正式文档对此非常模糊。至少可以说。

最佳答案

文档故意含糊不清。 JVM 必须在多种不同类型的机器上运行:Windows 和 Unix 衍生机器。不同的文件系统有不同的行为。如果您希望您的程序在多台计算机上可靠地工作,您必须(我再说一遍,必须)针对最坏的情况进行设计。

最小惊奇法则建议您应该吞噬整个 DirectoryStream 以获得快照(或非常接近快照),遍历快照,然后重新吞噬流。然后,您可以比较不同版本的快照以确定对底层目录的更改。

关于java - 迭代 DirectoryStream 并同时更改目录的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18131941/

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