我有一个方法需要String
参数作为根目录,我想为所有子文件夹保存文件的名称和路径。将所有文件递归保存在一个列表中
FileObject
只是一个类,有两个String
变量 - name
和path
。
private static List<FileObject> getAllFilePaths(String rootDir, List<FileObject> helper) {
File directory = new File(rootDir);
System.out.println("rootDir: "+rootDir);
FileObject fo=new FileObject();
//get all files and directories
File[] allFiles = directory.listFiles();
for (File file : allFiles) {
if (file.isFile()) {
System.out.println("If file: "+file.getName());
//if it's a file add it to results
fo.setPath(file.getAbsolutePath());
fo.setName(file.getName());
helper.add(fo);
} else if (file.isDirectory()) {
System.out.println("else if: "+file.getName());
//is it's a directory do the method again and add to to results
//fo.setPath(file.getAbsolutePath());
//fo.setName(file.getName());
//results.add(fo);
getAllFilePaths(file.getAbsolutePath(),helper);
}
}
return helper;
}
我尝试了许多不同的方式来实现此方法,但返回的列表是错误的。我如何正确地做到这一点?
你需要多说“但返回的列表是错误的”。它可能有完全相同的'FileObject's(因为我没有看到你为每个正在处理的文件创建新的'FileObject'的任何地方)? – Pshemo