如何遍历带有子文件夹和文件的文件夹,并将它们放在文件列表和目录列表中?
我试图只放入文件。我下车了,也许有更好的方法吗?
public List<File> getFileList(String directoryPath, ArrayList<File> files) {
File directory = new File(directoryPath);
File[] filesList = directory.listFiles();
for (File file : filesList) {
if (file.isFile()) {
if (!(file.isDirectory())) {
if (file.getName().substring(file.getName().indexOf(".")).equals(".xml")) {
files.add(file);
}
}
} else if (file.isDirectory()) {
this.getFileList(file.getAbsolutePath(), files);
}
}
return files;
}
我希望总共有两个包含目录和文件的列表。
答案 0 :(得分:1)
File
不能同时使File#isDirectory
和File#isFile
都为真。所以这个
if (file.isFile()) {
if (!(file.isDirectory())) {
不是必需的。第一个if
足以使File
是普通文件而不是目录。
您尝试仅收集以.xml
结尾的文件。请注意,测试文件名中以第一个点.
开头的部分并不是一种稳定的方法。考虑一个名为foo.bar.baz.xml
的文件。您的方法将检查.bar.baz.xml
是否等于.xml
。检查this answer,了解如何稳定地执行此操作。