java - 在 Java 7 中,列出带有 "relative path"的文件

标签 java unix directory java-7

鉴于以下目录结构:

/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/

相关文章:

java - 如何分两行打印输出?

java - 从脚本启动 Spring boot 应用程序

linux - uuencode 无法正常使用我的以下命令附加文件

file - 如何读取特定行和特定位置?

java - 使用 servlet 在 WEB 文件夹中创建新目录不起作用

PHP - 将文件 move 到服务器上的不同文件夹中

java - 套接字上的客户端的高性能多线程

java - 如何使用 SoapUI 测试需要多选复选框的 REST 服务?

c - 秒到纳秒 - struct itimerspec

variables - 在批处理文件的文件路径目录中使用变量