2010-09-07 12 views

risposta

126

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

Inoltre, se si vuole scoprire se l'originale Filefa esiste e è una directory, quindi exists() e isDirectory() sono quello che stai dopo.

+7

Usa file.getParent() con attenzione, perché può restituire null, in alcuni casi . – geschema

+0

@geschema La risposta di Ponaguynik qui sotto risponde a questo – 4myle

21

File.getParent() dalla documentazione di Java

+0

It 404s * testo di riempimento * – Caelum

+0

https://docs.oracle.com/javase/8/docs/api/java/io/File.html#getParent-- –

7

API File File.getParent o File.getParentFile dovrebbe restituire si Directory di file.

Il codice dovrebbe essere come:

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

È possibile controllare ulteriormente il file genitore è directory utilizzando 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 si rispondi alla domanda, questo non funziona per un file. – toni07

+0

mostrami l'esempio riproducibile @toni –

+0

'code' final File file = new File (" C: /dev/changeofseasons.mid "); System.out.println ("file esiste?" + File.exists()); System.out.println ("directory del file:" + file.getAbsolutePath()); Ok, mi dispiace per il rientro zoppo, non penso sia possibile formattare il codice nei commenti. Tuttavia, il tuo codice ovviamente non funziona. – toni07

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

Le descrizioni sono necessarie. –

+1

Benvenuti in Stack Overflow! In generale, le risposte al codice necessitano di una piccola spiegazione - vedi questa meta [Stackoverflow post] (http://meta.stackoverflow.com/a/260413/838992). Con la risposta che hai postato, potrebbe essere necessario spiegare che stai cercando di dare un caso generale e come si riferisce al post effettivo dell'OP. Più seriamente - potresti prendere in considerazione come funzionerebbe su 'your_file_path =" C: \\ testfiles \\ temp \\ testfile ";' - Non penso che darebbe quello che speri. –

+0

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

0

È possibile utilizzare questa

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

Ho trovato questo più utile per ottenere la posizione del file assoluto.

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

Se si fa qualcosa di simile:

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

parent sarà nullo.

Quindi, per ottenere la directory di questo file si può fare dopo:

parent = file.getAbsoluteFile().getParent(); 
0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

Questa sarebbe la mia soluzione

Problemi correlati