JTree空指针异常

时间:2014-04-26 14:22:58

标签: nullpointerexception jtree

如果我将路径放到我的CD驱动器上,它会按原样列出所有文件和文件夹,但如果我将路径放到硬盘驱动程序分区,则会出现NullPointerException。有人可以帮我弄这个吗。我无法理解这一点。 CD文件夹结构和分区结构有什么不同O.o System.out.print适用于CD和HDD分区。这是一个代码:

import java.awt.Dimension;
import java.io.File;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;

/**
 *
 * @author Anak1n
 */
public class gui extends JPanel {

    private final JTree tree;

    TreeModel model;
    JFileChooser chooser = new JFileChooser();
    JButton load;
    File fileRoot = new File("F:/");
    DefaultMutableTreeNode root;

    public gui() {

        root = new DefaultMutableTreeNode();

        getList(root, fileRoot);

        tree = new JTree(root);
        tree.setPreferredSize(new Dimension(300, 400));
        tree.setRootVisible(false);
        add(new JScrollPane((JTree) tree), "Center");

    }

    public void getList(DefaultMutableTreeNode node, File f) {

        if (f.isDirectory()) {
            System.out.println(f.getName());
            DefaultMutableTreeNode child = new DefaultMutableTreeNode(f);
            node.add(child);
            File fList[] = f.listFiles();
           for (File fList1 : fList) {
                getList(child, fList1); 
            }
        }

        if (f.isFile()) {
            DefaultMutableTreeNode child = new DefaultMutableTreeNode(f);
            node.add(child);
        }

    }

}

1 个答案:

答案 0 :(得分:0)

是的问题是在Windows文件夹权限。这解决了一些问题:

if ( f.isDirectory() && !f.getName().equals("$RECYCLE.BIN") && !f.getName().equals("System Volume Information") && 
                !f.getName().equals("$Recycle.Bin") && !f.getName().equals("Config.Msi"))

但是还有更多无法访问的锁定文件。