gpt4 book ai didi

java - 列出 java 目录和子目录中的文件,仅包括部分文件路径

转载 作者:行者123 更新时间:2023-11-30 07:22:42 26 4
gpt4 key购买 nike

我需要从给定目录中获取文件的路径及其在 java 中的父目录,但不包括它。

因此,例如,如果为我的方法指定路径:/home/user/test 作为路径,它将返回该目录及其下所有文件的路径。

所以如果 /home/user/test 有子文件夹:/subdir1/subdir2 每个包含 file1.txt file2.txt 然后该方法的结果将是包含 /subdir1/file1.txt/subdir2/file2.txt< 的 2 个字符串

如果 subdir1 中有一个名为 subsubdir 的目录,并且在 file3.txt 中,则为该文件创建的字符串将是/subdir1/subsubdir/file3.txt,如果还有继续的子目录。

我的想法是我只想要文件上方的目录路径而不是绝对路径,所以只有初始给定路径之后的目录。

我知道这有点令人困惑,但我相信有人能理解它。现在我所拥有的只是一个递归函数,它可以打印出文件名及其绝对路径。

有什么帮助吗?

最佳答案

如果您尝试过一些事情并提出相关问题,那该有多好...

然而...

public class TestFileSearch {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new TestFileSearch();
}

public TestFileSearch() {
File parentPath = new File("C:/Users/shane/Documents");
List<String> files = list(parentPath);

for (String file : files) {
System.out.println(file);
}
}

protected List<String> list(File parent) {
return listFiles(parent, parent);
}

protected List<String> listFiles(File parent, File folder) {
List<String> lstFiles = new ArrayList<String>(25);
if (folder.isDirectory()) {

File[] files = folder.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
lstFiles.addAll(listFiles(parent, file));
} else {
String path = file.getPath();
String offset = parent.getPath();

path = path.substring(offset.length());
lstFiles.add(path);
}
}
}
}

return lstFiles;
}
}

你可以简单地做一个普通的文件夹递归,返回一个文件列表,然后去掉前缀,但这取决于你

关于java - 列出 java 目录和子目录中的文件,仅包括部分文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12505491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com