toFile()。listFiles()上的NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE

时间:2019-09-27 04:10:11

标签: java file java-8 findbugs

我得到以下代码的“ NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE”。我尝试了几种选择,但仍然遇到类似的问题。 它在下面的行

parentFolder.toFile().listFiles()
if(files !=null && files.length>0)

完整代码如下:

        final String dir = filePath.substring(0, filePath.lastIndexOf(PATH_SEPARATOR));
        final String logFile = filePath.substring(filePath.lastIndexOf(PATH_SEPARATOR) + 1);

        final Path parentFolder = Paths.get(dir);
        final File[] files = parentFolder.toFile().listFiles();


        if (files !=null && files.length>0) {
            final Optional<File> mostRecentFileOrFolder = Stream.of(files)
                    .filter(f -> f.getName().startsWith(logFile))
                    .max(Comparator.comparingLong(File::lastModified));

            if (mostRecentFileOrFolder.isPresent()) {
                final File mostRecent = mostRecentFileOrFolder.get();
                log.info("Picked up most recent file from path {}", mostRecent.getAbsolutePath());

            }
        }

更新:完整日志:

[INFO]由于调用方法[com.sourav.TestService,com.sourav.TestService]的返回值,可能在com.sourav.TestService.setValidFilePath()中取消空指针的引用:在TestService.java中调用的方法:[第85行] ]在TestService.java中为null:[第85行] NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE [INFO]

1 个答案:

答案 0 :(得分:1)

parentFolder.toFile()将返回一个文件对象。如果此文件不存在,则listFiles()将引发错误。因此,在查找listFiles之前,需要检查该文件是否存在。