listFiles不返回文件,只返回顶级文件夹

时间:2015-11-26 14:44:05

标签: java file

我正在尝试迭代文件夹

我的文件位于

D:\PROJECT_FOLDER\rootProject\semiRootProject\project\build\resources\main\com\xxxx\pack\file.xlsx 

然而,当我尝试在控制台中迭代它时,显示

11:39:06.731 [main] INFO  com.xxxx.util.KiePackageCreator - File found: D:\PROJECT_FOLDER\rootProject\semiRootProject\project\build\resources\main\com.

有什么问题?我的搜索循环看起来像这样。

File fileFolder = new File(projectBuildDir + RESOURCE_SUBFOLDER);

for (File file : fileFolder.listFiles(new FilenameFilter() {

    @Override
    public boolean accept(File dir, String name) {
        //if (name.endsWith(".xlsx")) {
            return true;
        //}
        //return false;
    }

})) {
    LOGGER.info("File found: {}.", file.toPath());
    if (file.isFile()) { 
        Resource fileResource = getClassPathResource(file.getName());
        String filePath = file.getPath();
        String rulePath = MAVEN_RESOURCE_PATH + filePath.substring(filePath.indexOf("com"));
        LOGGER.info("Attempt to write into: {}.", rulePath);
        kfs.write(rulePath, fileResource);
    }
}

2 个答案:

答案 0 :(得分:2)

列表文件列出了您指定的目录中的所有文件和目录。它没有递归地这样做。

也许walkFileTree更适合你。

答案 1 :(得分:0)

您需要遍历代码中的子文件夹。您只是遍历fileFolder指向的目录中的文件。