Cómo llegar ddd desde el nombre de ruta de acceso donde el test.java reside.

File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
  • Es este un archivo genérico, o que están tratando de obtener el directorio principal de su archivo de origen? Si el último, no estoy seguro de que usted entiende Java compilación. En tiempo de ejecución, test.java probablemente incluso no existen en el equipo donde el programa está siendo ejecutado. Es el compilado .class archivo que se ejecuta. Así que esto sólo funcionará si usted sabe donde ddd se encuentra, en cuyo caso no hay ningún punto en la búsqueda de él mediante programación; sólo con la fuerza de código.
InformationsquelleAutor minil | 2011-11-19

9 Comentarios

  1. 132

    Uso Archivo‘s getParentFile() método y String.lastIndexOf() para recuperar sólo la inmediata directorio padre.

    Marca de comentario es una mejor solución quelastIndexOf():

    file.getParentFile().getName();

    Estas soluciones sólo funciona si el archivo tiene un archivo principal (p. ej., creado a través de uno de los archivos de los constructores de tomar un padre File). Cuando getParentFile() es nulo tendrás que recurrir a la utilización de lastIndexOf, o usar algo como Apache Commons’ FileNameUtils.getFullPath():

    FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
    => C:/aaa/bbb/ccc/ddd

    Hay varias variantes para retener/colocar el prefijo y el separador final. Usted puede utilizar el mismo FilenameUtils clase para coger el nombre de el resultado, el uso de lastIndexOf, etc.

    • Usted no necesita lastIndexOf, sólo tiene que utilizar file.getParentFile().getName().
    • Sólo en el caso. Si devuelve null (si ha creado File ejemplo con la ruta relativa) – trate de file.getAbsoluteFile().getParentFile().getName().
    • Que sólo funciona cuando el archivo fue creado con un Archivo principal, sin embargo, que supongo que es relativamente rara.
  2. 19
    File f = new File("C:/aaa/bbb/ccc/ddd/test.java");
    System.out.println(f.getParentFile().getName())

    f.getParentFile() puede ser nulo, así que usted debe comprobar esto.

    • Sólo para asegurarse, el resultado es como sigue: C:/aaa/bbb/ccc/ddd
  3. 15

    Uso a continuación,

    File file = new File("file/path");
    String parentPath = file.getAbsoluteFile().getParent();
    • Vale la pena señalar que este método debe tener un padre conjunto, incluso si el archivo subyacente no.
  4. 10

    En Java 7 tienes el nuevo Rutas de acceso a la api de. Las modernas y limpias de solución es:

    Paths.get("C:/aaa/bbb/ccc/ddd/test.java").getParent().getFileName();

    Resultado sería:

    C:/aaa/bbb/ccc/ddd
  5. 5

    Si usted acaba de Cadena de ruta de acceso y no desea crear un nuevo Archivo de objeto se puede usar algo como:

    public static String getParentDirPath(String fileOrDirPath) {
        boolean endsWithSlash = fileOrDirPath.endsWith(File.separator);
        return fileOrDirPath.substring(0, fileOrDirPath.lastIndexOf(File.separatorChar, 
                endsWithSlash ? fileOrDirPath.length() - 2 : fileOrDirPath.length() - 1));
    }
    • Esto arroja ArrayOutOfBoundsException si usted ya está en la raíz de la ubicación»/»-
  6. 2
    File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
    File curentPath = new File(file.getParent());
    //get current path "C:/aaa/bbb/ccc/ddd/"
    String currentFolder= currentPath.getName().toString();
    //get name of file to string "ddd"

    si necesita añadir carpeta «ddd» por otra ruta de acceso de uso;

    String currentFolder= "/" + currentPath.getName().toString();
  7. 1

    A partir de java 7 yo prefiero usar la Ruta. Usted sólo tiene que poner la ruta en:

    Path dddDirectoryPath = Paths.get("C:/aaa/bbb/ccc/ddd/test.java");

    y crear algún método get:

    public String getLastDirectoryName(Path directoryPath) {
       int nameCount = directoryPath.getNameCount();
       return directoryPath.getName(nameCount - 1);
    }
  8. 0

    En Groovy:

    No hay necesidad de crear un File instancia para analizar la cadena en groovy. Se puede hacer de la siguiente manera:

    String path = "C:/aaa/bbb/ccc/ddd/test.java"
    path.split('/')[-2]  //this will return ddd

    La división va a crear la matriz [C:, aaa, bbb, ccc, ddd, test.java] y el índice -2 será el punto de entrada antes de la última, que en este caso es ddd

  9. 0
        //get the parentfolder name
        File file = new File( System.getProperty("user.dir") + "/.");
        String parentPath = file.getParentFile().getName();

Dejar respuesta

Please enter your comment!
Please enter your name here