Can';在Java/Netbeans 8中找不到空指针递归

Can';在Java/Netbeans 8中找不到空指针递归,java,netbeans,nullpointerexception,Java,Netbeans,Nullpointerexception,我正在尝试编写一个屏幕保护程序类型的程序,但是我得到了一个无法跟踪的空指针异常。我正在浏览一个目录,我认为正在发生的是,当“walk”到达一个文件夹而不是一个文件时,它会抛出异常。我就是不知道该怎么办!代码如下: import java.io.File; import java.io.IOException; import java.util.Random; public class Recursion { public void walk(String path) throws

我正在尝试编写一个屏幕保护程序类型的程序,但是我得到了一个无法跟踪的空指针异常。我正在浏览一个目录,我认为正在发生的是,当“walk”到达一个文件夹而不是一个文件时,它会抛出异常。我就是不知道该怎么办!代码如下:

import java.io.File;
import java.io.IOException;
import java.util.Random;


public class Recursion {

    public void walk(String path) throws InterruptedException, IOException {

        File root = new File(path);
        File[] list = root.listFiles();
        String[] fileArray = new String[list.length];
        int i = 0;
        if (list == null) {
            return;
        }

        for (File f : list) {

            if (f.isDirectory()) {
                walk(f.getAbsolutePath());

            } else if (f.isFile()) {
                String outPath = f.getAbsolutePath();
                System.out.println("File:" + outPath);
                fileArray[i] = outPath;
                i++;

            }
        }
        for (int j = 0; j < fileArray.length; j++) {//WILL NEED TO CONVERT TO SOME FORM OF WHILE LOOP LATER
            Random randomGenerator = new Random();//Initiates random generator
            int randomInt = randomGenerator.nextInt(fileArray.length);////Limits max random to length of folder array
            String files = fileArray[randomInt];//Chooses a filename based on random number

            Imagetime go = new Imagetime();
            go.Show(files);

        }

}
“显示图像…”来自Imagetime类

其结果是显示初始目录中的少数文件,但随后不再显示其他文件夹中的文件,因为异常导致所有文件都结束

其他一切都按照我预期的方式运行,但我不知道如何消除这个问题。如果我删除了

if(f.isDirectory()){
     walk(f.getAbsolutePath())
}
如果将if条件留空,则根本不会显示任何图像

有人请帮忙,这已经让我精神失常太久了


提前感谢。

如果文件夹中有任何目录,则数组长度将超过文件数,并在数组末尾留下一组空条目。当你的随机数击中其中一个,你会得到这个错误。我建议将阵列切换到列表以消除此问题

显示Imagetime类的代码会很有用。现在问题解决了。我没有添加来自“Imagetime”的代码,因为它现在有点长而且凌乱-在我敢在这里展示它之前需要做很多工作。。。。
if(f.isDirectory()){
     walk(f.getAbsolutePath())
}