鉴于以下目录结构:
/dir1
/dir1/dir2
/dir1/dir2/file1
/dir1/dir2/file2
/dir1/dir2/dirA/file3
someFunction("dir2")
期望的输出:
dir2/file1
dir2/file2
dir2/dirA/file3
我正在使用 FileUtils.listFiles 和 Paths,然后进行字符串操作,但想知道是否有更好的方法。只是看起来很复杂。
Unix 命令 find dir2 非常准确。
最佳答案
您有一个基本目录和一个 Collection<File>
。您可以使用Path.relativize
获取从一个到另一个的相对路径。
这个例子,给定 /dir1
和/dir1/foo/bar/baz
,将导致 foo/bar/baz
没有任何脆弱的字符串操作:
import java.io.*;
import java.nio.file.*;
class Foo {
public static void main(String[] args) throws Exception {
Path base = Paths.get("/dir1");
File f = new File("/dir1/foo/bar/baz");
System.out.println(base.relativize(f.toPath()));
}
}
关于java - 在 Java 7 中,列出带有 "relative path"的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59975324/