Wie erhalte ich das Verzeichnis einer Datei mithilfe des Dateiobjekts?

110

Betrachten Sie den Code:

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

testfileist eine Datei und kann vorhanden sein oder nicht. Ich möchte das Verzeichnis c:\\temp\\java\\mit dem FileObjekt erhalten. Wie mache ich das?

Koerr
quelle

Antworten:

170

In jedem Fall würde ich erwarten file.getParent()(oder file.getParentFile()), Ihnen zu geben, was Sie wollen.

Außerdem, wenn Sie herausfinden möchten , ob das Original File tut exist und ist ein Verzeichnis, dann exists()und isDirectory()sind das, was du bist nach.

Jon Skeet
quelle
9
Verwenden Sie file.getParent () sorgfältig, da es in einigen Fällen null zurückgeben kann.
geschema
@geschema Ponaguyniks Antwort unten spricht dies an
4myle
24

File.getParent () aus der Java-Dokumentation

Joel
quelle
Es 404s Fülltext
Caelum
14

Wenn Sie so etwas tun:

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

parent wird null sein.

Um das Verzeichnis dieser Datei zu erhalten, gehen Sie wie folgt vor:

parent = file.getAbsoluteFile().getParent();
Ponaguynik
quelle
8

Datei-API File.getParent oder File.getParentFile sollten das Verzeichnis der Datei zurückgeben.

Ihr Code sollte wie folgt aussehen:

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

Sie können außerdem mithilfe der File.isDirectory- API überprüfen, ob Ihre übergeordnete Datei ein Verzeichnis ist

if(file.isDirectory()){
    System.out.println("file is directory ");
}
YoK
quelle
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
quelle
1
Sie beantworten die Frage nicht, dies funktioniert nicht für eine Datei.
Toni07
codeendgültige Datei file = neue Datei ("C: /dev/changeofseasons.mid"); System.out.println ("Datei existiert?" + File.exists ()); System.out.println ("Verzeichnis der Datei:" + file.getAbsolutePath ()); Ok, sorry für lahmes Einrücken, ich glaube nicht, dass es möglich ist, Code in Kommentaren zu formatieren. Trotzdem funktioniert Ihr Code offensichtlich nicht.
Toni07
Danke, behoben <! --->
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
quelle
Beschreibungen sind erforderlich.
Halvor Holsten Strand
1
Willkommen bei Stack Overflow! Im Allgemeinen benötigen Code-Antworten eine kleine Erklärung - siehe diesen Meta- Stackoverflow-Beitrag . Mit der Antwort, die Sie gepostet haben, müssen Sie möglicherweise erklären, dass Sie versuchen, einen allgemeinen Fall zu nennen, und wie er sich auf den tatsächlichen Beitrag des OP bezieht. Ernsthafter - Sie möchten vielleicht überlegen, wie es funktionieren würde your_file_path = "C:\\testfiles\\temp\\testfile";- ich glaube nicht, dass es das geben würde, was Sie hoffen.
J Richard Snape
Sollte die richtige Antwort sein. Dies zeigt den vollständigen Pfad zur Datei.
Magno C
0

Sie können dies verwenden

 File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());
Saurabh
quelle
0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

Das wäre meine Lösung

nobes
quelle
-1

Ich fand dies nützlicher, um den absoluten Speicherort der Datei zu ermitteln.

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