我写了一段计算文件和文件夹数代码.输入的路径如果是:E:\SAVEFILE\(SAVEFILE是个文件夹)就没有问题.它就能准确的计算出里面的文件和文件夹数.如果我输入的路径是E:\这个根目录的话,在运行时就会出现NullPointerException异常,不知道为什么,请各位帮忙看看代码哪里错了.谢谢:)代码:import java.io.*;
public class FilesCounter
{
private static int filenum=0;
private static int folder=0;
public static void main(String[] args)throws Exception
{
Counter(args[0]);
System.out.println("文件数:"+filenum);
System.out.println("文件夹数:"+folder);
} public static void Counter(String path)throws Exception
{
File file=new File(path);
if(!file.exists())
{
System.out.println("错误:指定的路径不存在,请重新指定!");
System.exit(0);
}
if(file.isDirectory())
{
File[] files=file.listFiles();
for(File f:files)
{
if(f.isFile())
{
filenum=filenum+1;
}
else if(f.isDirectory())
{
folder=folder+1;
Counter(f.getPath());
}
}
} }
}

解决方案 »

  1.   

    if(file.isDirectory())
    你只判断了一种情况,就是指定路径下面的是文件夹的情况,假如不是文件夹而是文件应该把计数器加一,否则只适合只有一层嵌套的情况。
      

  2.   

    E:\\System Volume Information
    目录的文件列表为空
    我是 xp系统  
    期待高手解说
      

  3.   

    另外,我这个菜鸟建了一个JAVA群:15017810,请各位朋友加入.
      

  4.   


    if(file.isDirectory())
            {
                File[] files=file.listFiles();
                for(File f:files)
                {
                    if(f.isFile())
                    {
                        filenum=filenum+1;
                    }
                    else if(f.isDirectory())
                    {
                        folder=folder+1;
                        Counter(f.getPath());
                    }
                }
            }else{
                 folder++;
            }

      

  5.   

    在根目录路的情况下  你只判断了一种文件夹情况  files遍历 如果碰到文件 你又没做出处理 当然得出错了
      

  6.   

    4楼的朋友,你的那段代码是什么意思呀,我看不懂。你加了一个else{folder++}有什么用啊?private static int file=0;代表文件的计数
    private static int folder=0;代表文件夹的计数
      

  7.   

    五楼的朋友,你是说我没对所输入的路径做文件的处理吗?我刚才做了,如果所输入的路径是文件的话,就让filenum加1呀。可是,那个异常照样出,输入根目录就出。
      

  8.   


    import java.io.*;
    public class FilesCounter
    {
        private static int filenum=0;
        private static int folder=0;
        public static void main(String[] args)throws Exception
        {
            Counter(args[0]);
            System.out.println("文件数:"+filenum);
            System.out.println("文件夹数:"+folder);
        }    public static void Counter(String path)throws Exception
        {
            File file=new File(path);
            if(!file.exists())
            {
                System.out.println("错误:指定的路径不存在,请重新指定!");
                System.exit(0);
            }
            if(file.isDirectory())
            {
                File[] files=file.listFiles();
    if(files!=null){
                for(File f:files)
                {
                    if(f.isFile())
                    {
                        filenum=filenum+1;
                    }
                    else if(f.isDirectory())
                    {
                        folder=folder+1;
                        Counter(f.getPath());
                    }
                }
    }
            }else{
                  filenum++;
    }    }
    }