代码如下:
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.io.*;
import javax.swing.filechooser.*;
public class test 
{
public test()
{
init();
}
public void init()
{
JFrame f=new JFrame("资源管理器");
f.setSize(400,300);
f.setLocationRelativeTo(null);
DefaultMutableTreeNode root=new DefaultMutableTreeNode("计算机");
File roots[]=File.listRoots();
for(int i=0;i<roots.length;i++)
{
DefaultMutableTreeNode node=new DefaultMutableTreeNode(roots[i]);
root.add(node);
explored(roots[i],node);
}
JTree tree=new JTree(root);
JScrollPane sp=new JScrollPane(tree);
f.add(sp);
f.setVisible(true);
}
public void explored(File file,DefaultMutableTreeNode node)
{
if(file.isDirectory())
{
File children[]=file.listFiles();
for(int i=0;i<children.length;i++)
{
if(children[i].isDirectory())
{
DefaultMutableTreeNode _node=new DefaultMutableTreeNode(children[i].getName());
node.add(_node);  explored(children[i],_node);
}
}
}
}
public static void main(String args[])
{  new test();  }
}
控制台总是 提示 Exception in thread "main" java.lang.NullPointerException   请问为什么,哪错了

解决方案 »

  1.   

    File children[]=file.listFiles();
    for(int i=0;i<children.length;i++) 
    这里得到的children可能为null的
      

  2.   

    public void explored(File file,DefaultMutableTreeNode node) 

    if(file.isDirectory()){
    File children[]=file.listFiles();
    if (children == null){
    System.out.println("children is null.") ;
    return ;
    }
    for(int i=0;i<children.length;i++){ 
    if(children[i].isDirectory()){ 
    DefaultMutableTreeNode _node=new DefaultMutableTreeNode(children[i].getName());
    node.add(_node); explored(children[i],_node); 



    }