如何获取Java中文件路径的直接子目录?
How to get the inmediate child directory of a file path in Java?
我想导航文件系统并获取没有根目录的子目录(如果存在)的路径。
例如:
- 输入:
Users/Documents/SVG
- 输出:
Documents/SVG
到目前为止,我的解决方案是对路径的字符串操作进行硬编码:
/**
* Return the path to the immediate child of a directory.
*
* @param path to a directory
* @return path to the child without the root
*/
public static String removeRootFolderInPath(String path) {
ArrayList<String> tmp = new ArrayList<>(Arrays.asList(path.split("/")));
if (tmp.size() > 1) {
tmp.remove(0);
}
path = String.join("/", tmp);
return path;
}
有没有更优雅的方法来做到这一点?
public static void main(String[] args) {
String strPath = "Users\Documents\SVG";
System.out.println(getChild(strPath));
}
public static Path getChild(String str) {
Path path = Path.of(str);
if (path.getNameCount() < 1) { // impossible to extract child's path
throw new MyException();
}
return path.subpath(1, path.getNameCount());
}
输出
Documents\SVG
Path.relativize() 可以帮忙
Path
parent=Path.of("Users"),
child=Path.of("Users","Documents","SVG");
Path relative=parent.relativize(child);
您可以按如下方式将此路径转换回 File
relative.toFile()
并且您可以将任何文件与路径合并为 follows
File f=...
Path p=f.toPath();
为了更好地操作文件,请查看 Files class
我想导航文件系统并获取没有根目录的子目录(如果存在)的路径。
例如:
- 输入:
Users/Documents/SVG
- 输出:
Documents/SVG
到目前为止,我的解决方案是对路径的字符串操作进行硬编码:
/**
* Return the path to the immediate child of a directory.
*
* @param path to a directory
* @return path to the child without the root
*/
public static String removeRootFolderInPath(String path) {
ArrayList<String> tmp = new ArrayList<>(Arrays.asList(path.split("/")));
if (tmp.size() > 1) {
tmp.remove(0);
}
path = String.join("/", tmp);
return path;
}
有没有更优雅的方法来做到这一点?
public static void main(String[] args) {
String strPath = "Users\Documents\SVG";
System.out.println(getChild(strPath));
}
public static Path getChild(String str) {
Path path = Path.of(str);
if (path.getNameCount() < 1) { // impossible to extract child's path
throw new MyException();
}
return path.subpath(1, path.getNameCount());
}
输出
Documents\SVG
Path.relativize() 可以帮忙
Path
parent=Path.of("Users"),
child=Path.of("Users","Documents","SVG");
Path relative=parent.relativize(child);
您可以按如下方式将此路径转换回 File
relative.toFile()
并且您可以将任何文件与路径合并为 follows
File f=...
Path p=f.toPath();
为了更好地操作文件,请查看 Files class