Mac、osx では、次のようにします。
File file = new File("ah/myfile.text");
できます:
file.getParent()
私は得る
ah
しかし、私がそうするなら
file.exists()
false が返されます。
なんで?
getParent () は、指定されたパスを解析し、最後のスラッシュの後の最後のセクションを削除します。ただし、exists () は実際のチェックを実行します。あなたのファイルは実際にこの場所に存在しないと思います。現在のディレクトリを確認するには、 new File(".").getAbsolutePath () を実行し、それに応じてパスを変更します。
File file = new File("ah/myfile.text");
System.out.println(file.getParent());
System.out.println(file.exists());
出力:
ah
false
同じ結果が得られます。Get parent は、ファイルやディレクトリが存在しない場合でも、パスを文字列として解析する必要があります。
AFile
は必ずしも存在する必要はありません。すでにシステム上にあるファイルへの参照、またはシステム上にある可能性のあるファイルへの参照である可能性があります。
あなたが言っているのは、(潜在的な)ファイルへのパスが にあるということですがah/myfile.text
、ファイルも親ディレクトリもまだ存在しない可能性があります。その親はまだah/
です。
次のようにして、親が存在するかどうかを確認することもできますfile.getParentFile().exists();