Cómo obtener ddd
del nombre de ruta donde reside el test.java.
File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
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.
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.
Use debajo,
File file = new File("file/path"); String parentPath = file.getAbsoluteFile().getParent();
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)); }
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();
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();
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); }
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