この問題の答えは B と C です。なぜ B が答えの 1 つなのかはわかりますが、なぜ C も正しいのかわかりません。
誰かがCが正しい理由を説明できますか?
この問題の答えは B と C です。なぜ B が答えの 1 つなのかはわかりますが、なぜ C も正しいのかわかりません。
誰かがCが正しい理由を説明できますか?
ディレクトリ内のエントリは、特定の順序で走査されるわけではありません。
B は、x/a の前に x/y を訪れるトラバーサルです。
C は、x/y の前に x/a を訪れるトラバーサルです。
関連する javadoc は、ディレクトリのエントリがアクセスされる順序に制約を課していないため、両方が可能です。(問題は言及されていません。)
そして、Javaチュートリアルは次のように述べています:
「ファイル ツリーは最初に深さをたどりますが、サブディレクトリがアクセスされる反復順序については何も仮定できません。」
強調が追加されました。
実際には、親ディレクトリ (x) が更新されない限り、走査順序は決定論的です。通常、ディレクトリ エントリがディスクに格納される順序によって異なります。
ls
コマンド ライン ユーティリティ (シェル自体など) は通常、ディレクトリ エントリ名を表示する前にソートするため、通常はこれに気付かないことにも注意してください。