检查ClassPathResource是文件还是文件夹

时间:2018-09-07 10:54:10

标签: spring spring-boot

在Spring Boot应用程序中,我目前正在使用PathMatchingResourcePatternResolver这种方式来读取胖罐中的文件夹内容(其中可能包含其他文件和文件夹):

ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources  = resourcePatternResolver.getResources("data/**");
for (Resource resource : resources) {
    if (resource instanceof ClassPathResource) {
        ClassPathResource classPathResource = (ClassPathResource) resource;
        if (resource.contentLength() > 0) { // OUCH, empty files are not properly handled!
            // process file
        } else {
            // process folder
        }
    }
}

上面代码的主要问题是条件resource.contentLength() > 0不能涵盖空文件的特殊情况。

因此,还有另一种方法可以检查ClasspathResource是文件还是文件夹?

1 个答案:

答案 0 :(得分:0)

为什么不能使用isFile方法来查找其文件是否如文档link所述从AbstractFileResolvingResource继承而来

因此resource.isFile()如果是文件,则返回true。