我写了一段计算文件和文件夹数代码.输入的路径如果是: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());
}
}
} }
}
解决方案 »
- 拿什么拯救你贪婪的正则表达式...
- Canvas问题...
- 随意问下,一个窗口中包含多个jpanel,jpanel中包含jbutton和自定义的控件等,关闭窗口时,释放资源是如何考虑的?是不是只要在frame关闭时调用下this.dispose();以及自定义控件提供的释放方法 就可以释放所有资源了?
- 怎样实现这个小功能啊?
- 读取.dll文件
- 怎么样把web应用打成war包?
- 谁有"俄罗斯方块"的源代码,让我参考一下?
- (1)socket能不能在applet中运用?(2)应用程序中能不能播放声音?谢谢!
- 谁有完整的java在linux下读excel的完整下载包URL,例子,文档,很急!!!!多少分都行
- 请教:请问java中存放数据库中的记录,用什么数据结构?(hashtable?vector?还是别的?)
- json如何处理类似这种结构的对象
- 请教一个返回操作的问题
你只判断了一种情况,就是指定路径下面的是文件夹的情况,假如不是文件夹而是文件应该把计数器加一,否则只适合只有一层嵌套的情况。
目录的文件列表为空
我是 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++;
} }
}