将文件和文件夹添加到工作表

时间:2019-07-06 06:47:47

标签: java

如何遍历带有子文件夹和文件的文件夹,并将它们放在文件列表和目录列表中?

我试图只放入文件。我下车了,也许有更好的方法吗?

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;
}

我希望总共有两个包含目录和文件的列表。

1 个答案:

答案 0 :(得分:1)

File不能同时使File#isDirectoryFile#isFile都为真。所以这个

if (file.isFile()) {
            if (!(file.isDirectory())) {

不是必需的。第一个if足以使File是普通文件而不是目录。

您尝试仅收集以.xml结尾的文件。请注意,测试文件名中以第一个点.开头的部分并不是一种稳定的方法。考虑一个名为foo.bar.baz.xml的文件。您的方法将检查.bar.baz.xml是否等于.xml。检查this answer,了解如何稳定地执行此操作。