File nesnesini kullanarak bir dosyanın dizinini nasıl alırım?


110

Kodu düşünün:

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

testfilebir dosyadır ve var olabilir veya olmayabilir. Nesneyi c:\\temp\\java\\kullanarak dizini almak istiyorum File. Bunu nasıl yapacağım?

Yanıtlar:


170

Her iki durumda da, file.getParent()(veya file.getParentFile()) size istediğinizi vermeyi beklerdim .

Özgün öğrenmek istiyorsanız Ayrıca, File does vardır ve bir sonra, bir dizin exists()ve isDirectory()vardır Neyin peşinde.


9
File.getParent () öğesini dikkatli kullanın, çünkü bazı durumlarda null döndürebilir.
geschema

@geschema Ponaguynik'in aşağıdaki cevabı bu
konuyu


14

Böyle bir şey yaparsanız:

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

parent boş olacak.

Yani bu dosyanın dizinini almak için daha sonra yapabilirsiniz:

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

8

File API File.getParent veya File.getParentFile size Directory of file döndürmelidir.

Kodunuz şöyle olmalıdır:

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

Ayrıca File.isDirectory API'sini kullanarak üst dosyanızın dizin olup olmadığını kontrol edebilirsiniz.

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
Soruyu cevaplamıyorsun, bu bir dosya için geçerli değil.
toni07

codefinal Dosya dosyası = yeni Dosya ("C: /dev/changeofseasons.mid"); System.out.println ("dosya var mı?" + File.exists ()); System.out.println ("dosyanın dizini:" + file.getAbsolutePath ()); Tamam, girinti yaptığım için özür dilerim, yorumlarda kodu formatlamanın mümkün olduğunu sanmıyorum. Yine de kodunuz belli ki çalışmıyor.
toni07

Teşekkürler, düzeltildi <! --->
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(), "");
}

Açıklamalara ihtiyaç vardır.
Halvor Holsten Strand

1
Stack Overflow'a hoş geldiniz! Genel olarak, kod yanıtlarının biraz açıklamaya ihtiyacı vardır - bu meta Stackoverflow gönderisine bakın . Gönderdiğiniz cevapla birlikte, genel bir vaka vermeye çalıştığınızı ve bunun OP'nin asıl gönderisiyle nasıl ilişkili olduğunu açıklamanız gerekebilir. Daha ciddisi - nasıl çalışacağını düşünmek isteyebilirsiniz your_file_path = "C:\\testfiles\\temp\\testfile";- umduğunuz şeyi vereceğini sanmıyorum.
J Richard Snape

Doğru cevap olmalı. Bu, dosyanın tam yolunu gösterecektir.
Magno C

0

Bunu kullanabilirsin

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

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

Bu benim çözümüm olurdu


-1

Bunu mutlak dosya konumunu elde etmek için daha kullanışlı buldum.

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.