这个问题的答案是B和C。我明白为什么B是答案之一,但我不明白为什么C也是正确的。
有人可以解释为什么 C 是正确的吗?
目录中的条目不会以任何特定顺序遍历。
B 是在 x/a 之前访问 x/y 的遍历
C 是在 x/y 之前访问 x/a 的遍历
两者都是可能的,因为相关的 javadocs 对访问目录条目的顺序没有任何限制。(没有提到这个问题。)
Java教程说:
“文件树首先是深度遍历,但您不能对访问子目录的迭代顺序做出任何假设。 ”
重点补充。
在实践中,只要父目录 (x) 没有更新,遍历顺序将是确定的。它通常取决于目录条目在磁盘上的存储顺序。
另请注意,您通常不会注意到这一点,因为命令行实用程序(例如ls
和 shell 本身)通常在将目录条目名称显示给您之前对其进行排序。