如何获取Java中文件路径的直接子目录?

How to get the inmediate child directory of a file path in Java?

我想导航文件系统并获取没有根目录的子目录(如果存在)的路径。

例如:

到目前为止,我的解决方案是对路径的字符串操作进行硬编码:

  /**
   * 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;
  }

有没有更优雅的方法来做到这一点?

看看Path.subpath()

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