我写了一段计算文件和文件夹数代码.输入的路径如果是: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());
}
}
} }
}
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());
}
}
} }
}
你只判断了一种情况,就是指定路径下面的是文件夹的情况,假如不是文件夹而是文件应该把计数器加一,否则只适合只有一层嵌套的情况。
目录的文件列表为空
我是 xp系统
期待高手解说
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++;
}
private static int folder=0;代表文件夹的计数
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++;
} }
}