sirve rutas que para obtener nombre manejo extension ejercicios clase archivo java groovy java-io

java - rutas - Cómo obtener solo el nombre del directorio principal de un archivo específico



obtener el nombre de un archivo en java (8)

Desde java 7 preferiría usar Path. Solo necesitas poner la ruta en:

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

y crea algún método get:

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

Cómo obtener ddd del nombre de ruta donde reside el test.java.

File file = new File("C:/aaa/bbb/ccc/ddd/test.java");


En Java 7 tienes la nueva api Paths. La solución más moderna y limpia es:

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


Si solo tiene String path y no desea crear un nuevo objeto File, 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)); }


Use debajo,

File file = new File("file/path"); String parentPath = file.getAbsoluteFile().getParent();


Utilice el método String.lastIndexOf() y String.lastIndexOf() para recuperar solo el directorio primario inmediato.

El comentario de Mark es una mejor solución que lastIndexOf() :

file.getParentFile().getName();

Estas soluciones solo funcionan si el archivo tiene un archivo principal (por ejemplo, creado a través de uno de los constructores de archivos que toman un File principal). Cuando getParentFile() es nulo, necesitará recurrir a lastIndexOf o usar algo como Apache Commons '' FileNameUtils.getFullPath() :

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

Hay varias variantes para retener / soltar el prefijo y el separador final. Puede usar la misma clase FilenameUtils para tomar el nombre del resultado, usar lastIndexOf , etc.


En Groovy:

No es necesario crear una instancia de File 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 creará la matriz [C:, aaa, bbb, ccc, ddd, test.java] y el índice -2 apuntará a la entrada antes de la última, que en este caso es ddd


File f = new File("C:/aaa/bbb/ccc/ddd/test.java"); System.out.println(f.getParentFile().getName())

f.getParentFile() puede ser nulo, por lo que debe verificarlo.


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 anexar la carpeta "ddd" por otra ruta, use;

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