Как получить ddd
от имени пути, где находится test.java.
File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
Как получить ddd
от имени пути, где находится test.java.
File file = new File("C:/aaa/bbb/ccc/ddd/test.java");
Используйте File
getParentFile()
method и String.lastIndexOf()
для получения только ближайшего родительского каталога.
Отметить комментарий лучше, чем lastIndexOf()
:
file.getParentFile().getName();
Эти решения работают только в том случае, если файл имеет родительский файл (например, созданный с помощью одного из конструкторов файлов с родительским File
). Когда getParentFile()
имеет значение null, вам нужно использовать lastIndexOf
или использовать что-то вроде Apache Commons 'FileNameUtils.getFullPath()
:
FilenameUtils.getFullPathNoEndSeparator(file.getAbsolutePath());
=> C:/aaa/bbb/ccc/ddd
Существует несколько вариантов сохранения/удаления префикса и трейлинг-разделителя. Вы можете использовать один и тот же класс FilenameUtils
для захвата имени из результата, используйте lastIndexOf
и т.д.
Я не думаю, что есть волшебный метод, чтобы получить это прямо. Однако, это должно быть хорошо:
File f = new File("C:/aaa/bbb/ccc/ddd/test.java");
String path = f.getParent();
System.out.println(path.substring(path.lastIndexOf("\\")+1,path.length()));
f.getParent()
может быть нулевым, поэтому вы должны его проверить.
EDIT: Чтобы убедиться, что результат выглядит следующим образом: C:/AAA/ВВВ/ссс/ддд
Используйте ниже,
File file = new File("file/path");
String parentPath = file.getAbsoluteFile().getParent();
Если у вас есть только путь String и вы не хотите создавать новый объект File, вы можете использовать что-то вроде:
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"
если вам нужно добавить папку "ddd" другим путем;
String currentFolder= "/" + currentPath.getName().toString();