¿Cómo obtengo el directorio de un archivo usando el objeto Archivo?

110

Considere el código:

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

testfilees un archivo y puede que exista o no. Quiero obtener el directorio c:\\temp\\java\\usando elFile objeto. ¿Cómo voy a hacer esto?

Koerr
fuente

Respuestas:

170

En cualquier caso, espero file.getParent()(o file.getParentFile()) que te dé lo que quieres.

Además, si usted quiere saber si el original File hace existir y es un directorio, entonces exists()y isDirectory()es lo que está buscando.

Jon Skeet
fuente
9
Utilice file.getParent () con cuidado, ya que puede devolver nulo en algunos casos.
geschema
La respuesta de @geschema Ponaguynik a continuación aborda esto
4myle
14

Si haces algo como esto:

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

parent será nulo.

Entonces, para obtener el directorio de este archivo, puede hacer lo siguiente:

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

Archivo API File.getParent o File.getParentFile deberían devolverle el directorio del archivo.

Tu código debería ser como:

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

Además, puede verificar que su archivo principal sea el directorio usando la API File.isDirectory

if(file.isDirectory()){
    System.out.println("file is directory ");
}
YoK
fuente
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
fuente
1
No responde a la pregunta, esto no funciona para un archivo.
toni07
codeArchivo final archivo = archivo nuevo ("C: /dev/changeofseasons.mid"); System.out.println ("el archivo existe?" + Archivo.exists ()); System.out.println ("directorio de archivo:" + file.getAbsolutePath ()); Ok, perdón por las sangrías poco convincentes, no creo que sea posible formatear el código en los comentarios. Aún así, su código obviamente no funciona.
toni07
Gracias, arreglado <! --->
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(), "");
}
Goyal amoroso
fuente
Se necesitan descripciones.
Halvor Holsten Strand
1
¡Bienvenido a Stack Overflow! En general, las respuestas del código necesitan una pequeña explicación: consulte esta publicación de meta Stackoverflow . Con la respuesta que ha publicado, es posible que deba explicar que está tratando de dar un caso general y cómo se relaciona con la publicación real del OP. Más en serio, es posible que desee considerar cómo funcionaría your_file_path = "C:\\testfiles\\temp\\testfile";, no creo que dé lo que espera.
J Richard Snape
Debería ser la respuesta correcta. Esto mostrará la ruta completa al archivo.
Magno C
0

Puedes usar esto

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

Esta seria mi solucion

nobes
fuente
-1

Encontré esto más útil para obtener la ubicación absoluta del archivo.

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