我需要从给定目录获取文件及其父目录的路径,但不包括它。
因此,例如,如果给我的方法指定path:/home/user/test作为路径,它将返回该目录及其下所有文件的路径。
/home/user/test
因此,如果/home/user/test有子文件夹:,/subdir1并且/subdir2每个包含file1.txt,file2.txt则该方法的结果将是2个字符串,其中包含/subdir1/file1.txt和/subdir2/file2.txt
/subdir1
/subdir2
file1.txt
file2.txt
/subdir1/file1.txt
/subdir2/file2.txt
并且如果subdir1在其中有一个目录,该目录中subsubdir有file3.txt,则为该文件创建的字符串将为/subdir1/subsubdir/file3.txt,并且如果还有其他子目录可以继续。
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; } }
您可以简单地进行普通的文件夹递归,返回文件列表和前缀的THEN条,但这取决于您