Fileオブジェクトを使用してファイルのディレクトリを取得するにはどうすればよいですか?


110

コードを考えてみましょう:

File file = new File("c:\\temp\\java\\testfile");

testfileファイルであり、存在する場合と存在しない場合があります。オブジェクトc:\\temp\\java\\を使用してディレクトリを取得したいFile。これを行うにはどうすればよいですか?

回答:


170

どちらの場合でも、私はあなたが望むものをあなたに与えることを期待していますfile.getParent()(またはfile.getParentFile())。

また、あなたは元のかどうかを知りたい場合はFile ありませんが存在するとされ、その後、ディレクトリexists()isDirectory()あなたが後にしているものです。


9
file.getParent()は、場合によってはnullを返す可能性があるため、注意して使用してください。
geschema 2014

@geschema Ponaguynikの以下の回答はこれに対応しています
4myle


14

このようなことをすると:

File file = new File("test.txt");
String parent = file.getParent();

parent nullになります。

したがって、このファイルのディレクトリを取得するには、次に行うことができます:

parent = file.getAbsoluteFile().getParent();

8

File API File.getParentまたはFile.getParentFileは、ファイルのディレクトリを返します。

あなたのコードは次のようになります:

    File file = new File("c:\\temp\\java\\testfile");
    if(!file.exists()){
        file = file.getParentFile();
    }

File.isDirectory API を使用して、親ファイルがディレクトリであることをさらに確認できます

if(file.isDirectory()){
    System.out.println("file is directory ");
}

4
File directory = new File("Enter any 
                directory name or file name");
boolean isDirectory = directory.isDirectory();
if (isDirectory) {
  // It returns true if directory is a directory.
  System.out.println("the name you have entered 
         is a directory  : "  +    directory);  
  //It returns the absolutepath of a directory.
  System.out.println("the path is "  + 
              directory.getAbsolutePath());
} else {
  // It returns false if directory is a file.
  System.out.println("the name you have
   entered is a file  : " +   directory);
  //It returns the absolute path of a file.
  System.out.println("the path is "  +  
            file.getParent());
}

1
あなたは質問に答えません、これはファイルに対しては機能しません。
toni07

code最終的なファイルfile = new File( "C:/dev/changeofseasons.mid"); System.out.println( "ファイルは存在しますか?" + file.exists()); System.out.println( "ファイルのディレクトリ:" + file.getAbsolutePath()); わかりません、インデントが不十分なため申し訳ありませんが、コメント内のコードをフォーマットすることはできません。それでも、コードは明らかに機能しません。
toni07

ありがとう、修正済み<!--->
Jigar Joshi 2015

3
File filePath=new File("your_file_path");
String dir="";
if (filePath.isDirectory())
{
    dir=filePath.getAbsolutePath();
}
else
{
    dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), "");
}

説明が必要です。
Halvor Holsten Strand

1
Stack Overflowへようこそ!一般に、コードの回答には少し説明が必要です。このStackoverflowのメタ投稿をご覧ください。投稿した回答では、一般的なケースを提示しようとしていることと、それがOPの実際の投稿とどのように関連しているかを説明する必要があります。もっと真剣に-あなたはそれがどのように機能するかを検討したいかもしれませんyour_file_path = "C:\\testfiles\\temp\\testfile";-私はそれがあなたが望むものを与えるとは思いません。
J Richard Snape

正解でなければなりません。これにより、ファイルへの完全なパスが表示されます。
Magno C

0

これを使えます

 File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());

0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

これは私の解決策です


-1

これは絶対ファイルの場所を取得するのに便利です。

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.