java - 从较长的文件路径中获取文件路径的一部分

标签 java string file

在我的工具中,我让用户选择一个特定的文件。通过在该文件上调用 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/

相关文章:

java - 我怎样才能对蜘蛛的行走 Action 进行编程?

java - 无法打开 ServletContext 资源 [/WEB-INF/mvc-dispatcher-servlet.xml]

java - 安卓登录: app crashes when entries are invalid?

java - 在 Java 中使用 try-catch 从 JTextField 中捕获分数的字符串输入

java - 从 stanford corenlp 的大数据集中查找特征

c - 如何在不改变指针指向地址的情况下改变指针的内容?

c++ - 程序在冒泡排序时崩溃?

java - 将 infinispan 缓存中的数据保存到文件

jquery - 如何在 blueimp/jQuery-File-Upload 上设置动态 url

Bash 使用通配符 append 到文件