我不太清楚如何命名这个问题,但我有一些错误,我并不真正理解。
我有一个方法,它递归地搜索标有根目录的“计算”的子目录,以查找它的文件内容。当我打印到控制台时,它似乎很有效。但是,当我试图将这些文件添加到文件列表中时,它似乎无法工作,大小为0.
如何将这些文件添加到列表或File[]或任何类型的数据结构中,以便进行处理?
这是我的代码:
public static List<File> walkDirectory(String path) {
List<File> fileList = new ArrayList<File>();
File root = new File(path);
File[] list = root.listFiles();
if (list == null) return null;
for (File f : list) {
if (f.isDirectory()) {
walkDirectory(f.getAbsolutePath());
}
else if (f.getParentFile().getName().contains("calculation")) {
fileList.add( f ); // does not work...
System.out.println("File: " + f.getAbsoluteFile());
}
}
return fileList;
}
public static void main(String[] args) {
System.out.println(FileWalker.walkDirectory("/path/to/root/directory").size()); // size is 0
}发布于 2016-06-04 08:40:09
将这一行List<File> fileList = new ArrayList<File>();移到walkDirectory函数的外部。这里发生的情况是,每次调用函数时都要创建一个新的fileList变量。
要么使类的fileList私有静态变量,要么在函数本身中传递List参数。
发布于 2016-06-04 08:39:21
if (f.isDirectory()) {
walkDirectory(f.getAbsolutePath());
} 您不会返回或做任何与walkDirectory()结果有关的事情。您可能希望将结果累加到一个列表中,并在循环完成后返回它。
https://stackoverflow.com/questions/37628121
复制相似问题