2 回答
TA贡献1772条经验 获得超6个赞
使用路径类获取目录名称:
private static Map<String, File> fileMap(String rootPath, File file) {
Map<String, File> fileMap = new HashMap<>();
fileMap.put(Paths.get(rootPath).getFileName().toString(), new File(rootPath)); // add root path
Path path = file.toPath();
while (!path.equals(Paths.get(rootPath))) {
fileMap.put(path.getFileName().toString(), new File(path.toUri())); // add current dir
path = path.getParent(); // go to parent dir
}
return fileMap;
}
您甚至可以直接作为参数传递,例如Path
fileMap("/root", new File("/root/dir1/dir2/dir3").toPath());
在这种情况下,您根本不需要该方法File
TA贡献1842条经验 获得超21个赞
您可以使用该方法获取文件路径,直到到达根目录:file.getParentFile()
private static Map<String, File> fileMap(String rootPath, File file) {
if (!file.getAbsolutePath().startsWith(rootPath)) {
throw new IllegalArgumentException(file.getAbsolutePath() + " is not a child of " + rootPath);
}
File root = new File(rootPath);
Map<String, File> fileMap = new HashMap<>();
while (!root.equals(file)) {
fileMap.put(file.getName(), file);
file = file.getParentFile();
}
fileMap.put(root.getName(), root);
return fileMap;
}
添加回答
举报