Bagaimana cara mendapatkan direktori file menggunakan objek File?


110

Perhatikan kodenya:

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

testfileadalah sebuah file, dan itu mungkin ada atau mungkin tidak ada. Saya ingin mendapatkan direktori c:\\temp\\java\\menggunakan Fileobjek. Bagaimana cara saya melakukan ini?

Jawaban:


170

Dalam kedua kasus tersebut, saya berharap file.getParent()(atau file.getParentFile()) memberikan apa yang Anda inginkan.

Selain itu, jika Anda ingin mengetahui apakah aslinya File memang ada dan merupakan direktori, maka exists()dan isDirectory()apa yang Anda cari.


9
Gunakan file.getParent () dengan hati-hati, karena mungkin mengembalikan null dalam beberapa kasus.
geschema

Jawaban @geschema Ponaguynik di bawah ini membahas ini
4myle


14

Jika Anda melakukan sesuatu seperti ini:

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

parent akan menjadi nol.

Jadi untuk mendapatkan direktori file ini, Anda dapat melakukan selanjutnya:

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

8

File API File.getParent atau File.getParentFile harus mengembalikan Anda Direktori file.

Kode Anda harus seperti:

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

Anda juga dapat memeriksa file induk Anda adalah direktori menggunakan API File.isDirectory

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
Anda tidak menjawab pertanyaan, ini tidak berfungsi untuk file.
toni07

codeFile akhir file = File baru ("C: /dev/changeofseasons.mid"); System.out.println ("file ada?" + File.exists ()); System.out.println ("direktori file:" + file.getAbsolutePath ()); Ok, maaf untuk indentasi yang timpang, saya rasa tidak mungkin untuk memformat kode dalam komentar. Namun, kode Anda jelas tidak berfungsi.
toni07

Terima kasih, telah diperbaiki <! --->
Jigar Joshi

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

Deskripsi diperlukan.
Halvor Holsten Strand

1
Selamat datang di Stack Overflow! Secara umum, jawaban kode memerlukan sedikit penjelasan - lihat posting meta Stackoverflow ini . Dengan jawaban yang Anda posting, Anda mungkin perlu menjelaskan bahwa Anda mencoba memberikan kasus umum dan bagaimana hubungannya dengan posting OP yang sebenarnya. Lebih serius lagi - Anda mungkin ingin mempertimbangkan bagaimana ini akan bekerja your_file_path = "C:\\testfiles\\temp\\testfile";- saya tidak berpikir itu akan memberikan apa yang Anda harapkan.
J Richard Snape

Seharusnya jawaban yang benar. Ini akan menunjukkan jalur lengkap ke file.
Magno C

0

Anda bisa menggunakan ini

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

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

Ini akan menjadi solusi saya


-1

Saya menemukan ini lebih berguna untuk mendapatkan lokasi file absolut.

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.