我正在尝试制作一种方法,该方法可以比较一些根路径和完整路径,并将具有名称和完整路径的所有目录提取到每个目录中FileMap
例如,假设我想做一个看起来像这样的东西:Map
Map<String, File> mapFile = new HashMap<>;
mapFile.put("root", new File("/root"));
mapFile.put("dir1", new File("/root/dir1"));
mapFile.put("dir2", new File("/root/dir1/dir2"));
mapFile.put("dir3", new File("/root/dir1/dir2/dir3"));
以下是我到目前为止的解决方案:
private Map<String, File> fileMap(String rootPath, File file) {
Map<String, File> fileMap = new HashMap<>();
String path = file.getPath().substring(rootPath.length()).replaceAll("\\\\", "/");// fu windows....
String[] chunks = path.split("/");
String p = rootPath.endsWith("/") ? rootPath.substring(0, rootPath.length() - 1) : rootPath;
for (String chunk : chunks) {
if (chunk.isEmpty()) continue;
p += "/" + chunk;
fileMap.put(chunk, new File(p));
}
return fileMap;
}
这就是应该如何使用:
Map<String, File> fileMap = fileMap("/root", new File("/root/dir1/dir2/dir3"));
fileMap.forEach((name, path) -> System.out.println(name + ", " + path));
主要问题是我不喜欢它,它看起来只是为了通过测试而制作的......它看起来很糟糕。
Java中是否有任何内置的解决方案或功能可以更清楚地说明这一点。编写这样的东西感觉就像我试图找到如何制作沸水。因此,任何帮助将不胜感激。谢谢。
梦里花落0921
茅侃侃
相关分类