在我的工具中,我让用户选择一个特定的文件。通过在该文件上调用 getAbsolutePath()
我将得到一个字符串,例如
C:\folder\folder\folder\dataset\MainFolder\folder\folder\folder\myfile.xml
如何将“MainFolder”的路径存储在新的字符串变量中。 我想要从上面的例子中得到的是
C:\folder\folder\folder\dataset\MainFolder\
结构始终是
Drive:\random\number\of\folders\dataset\main_folder_name\folder1\folder2\folder3\myfile.xml
我正在查找的文件夹的父文件夹的名称始终为“dataset”。该文件夹后面的那个是我感兴趣的。
最佳答案
我强烈建议使用文件 API 而不是字符串操作,这可以使您免受正斜杠与反斜杠的平台差异或任何其他差异的影响。
- 继续“向上一层”,直到到达 getParentFile() 返回 null 的根目录
- 如果你找到了你需要的文件夹,就跳出循环
- 跟踪最后一个父级,以便您可以在找到“数据集”后引用“main_folder_name”
代码
String path = "C:\\random\\number\\of\\folders\\dataset\\main_folder_name\\folder1\\folder2\\folder3\\myfile.xml";
File search = new File(path);
File lastParent = search;
while (search != null) {
if ("dataset".equals(search.getName())) {
break;
}
lastParent = search;
search = search.getParentFile();
}
if (lastParent != null) {
System.out.println(lastParent.getCanonicalPath());
}
输出
C:\random\number\of\folders\dataset\main_folder_name
关于java - 从较长的文件路径中获取文件路径的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32045943/