Come ottengo la directory di un file utilizzando l'oggetto File?


110

Considera il codice:

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

testfileè un file e può o non può esistere. Voglio ottenere la directory c:\\temp\\java\\utilizzando l' Fileoggetto. Come procedo a fare questo?

Risposte:


170

In entrambi i casi, mi aspetto file.getParent()(ofile.getParentFile() ) di darti quello che vuoi.

Inoltre, se si vuole scoprire se l'originale File non esistono e è una directory, exists()e isDirectory()sono ciò che stai cercando.


9
Usa file.getParent () con attenzione, perché in alcuni casi potrebbe restituire null.
geschema

La risposta di @geschema Ponaguynik di seguito affronta questo problema
4myle


14

Se fai qualcosa di simile:

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

parent sarà nullo.

Quindi per ottenere la directory di questo file puoi fare quanto segue:

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

8

File API File.getParent o File.getParentFile dovrebbero restituirti Directory del file.

Il tuo codice dovrebbe essere come:

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

Puoi anche controllare che il tuo file genitore sia la directory usando 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
Non rispondi alla domanda, questo non funziona per un file.
toni07

codefile finale file = nuovo file ("C: /dev/changeofseasons.mid"); System.out.println ("il file esiste?" + File.exists ()); System.out.println ("directory del file:" + file.getAbsolutePath ()); Ok, scusa per il rientro debole, non penso sia possibile formattare il codice nei commenti. Tuttavia, il tuo codice ovviamente non funziona.
toni07

Grazie, risolto <! --->
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(), "");
}

Sono necessarie descrizioni.
Halvor Holsten Strand

1
Benvenuto in Stack Overflow! In generale, le risposte al codice richiedono una piccola spiegazione: guarda questo post del meta Stackoverflow . Con la risposta che hai pubblicato, potresti dover spiegare che stai cercando di fornire un caso generale e come si riferisce al post effettivo dell'OP. Più seriamente - potresti considerare come funzionerebbe your_file_path = "C:\\testfiles\\temp\\testfile";- non penso che darebbe quello che speri.
J Richard Snape

Dovrebbe essere la risposta corretta. Questo mostrerà il percorso completo del file.
Magno C

0

Puoi usarlo

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

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

Questa sarebbe la mia soluzione


-1

L'ho trovato più utile per ottenere la posizione assoluta del file.

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.