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?

Koerr
sumber

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.

Jon Skeet
sumber
9
Gunakan file.getParent () dengan hati-hati, karena mungkin mengembalikan null dalam beberapa kasus.
geschema
Jawaban @geschema Ponaguynik di bawah ini membahas ini
4myle
24

File.getParent () dari Dokumentasi Java

Joel
sumber
Ini teks pengisi
Caelum
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();
Ponaguynik
sumber
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 ");
}
YoK
sumber
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());
}
Jigar Joshi
sumber
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(), "");
}
Lovenish Goyal
sumber
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());
Saurabh
sumber
0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

Ini akan menjadi solusi saya

bangsawan
sumber
-1

Saya menemukan ini lebih berguna untuk mendapatkan lokasi file absolut.

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
C. Ikongo
sumber