我想用递归方法打印出C盘下多有目录名和文件名(包括子文件夹和其中的文件),就像金山卫士那样,获取到某个盘符下所有内容,然后对文件进行管理(如:排序后进行大文件管理);但是事与愿违——打印不完整,不能输出所有内容,程序停止并报“空指针异常”。
是不是子目录里的文件及文件夹个数大于了上级目录中的个数,也就是这里for (int x = 0; x<files.length; x++)的files.length的问题?
请同志们帮我调试调试,看看问题出在哪里了?谢谢!
- import java.io.*;
- class FileDemo
- {
- public static void main(String[] args) throws Exception
- {
- File dir = new File("c:\\");
- showDir(dir);
- }
- public static void showDir(File dir)
- {
- sop(dir);//打印当前目录
- File[] files = dir.listFiles();//将“dir”目录下的所有对象存入files数组
-
- //遍历files
- for (int x = 0; x<files.length; x++)
- {
- //如果files[x]为目录,而且它下面还有内容,则再次调用本功能遍历其中内容,知道取出目录下的所有内容
- if (files[x].isDirectory())
- {
- showDir(files[x]);
- sop(files.length);//自己写上去的,不知道获得的length是什么的长度
- }
- sop(files[x]);//打印当前目录下的所有内容
- }
- }
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
复制代码 |