本帖最后由 z1342802487 于 2014-5-4 17:11 编辑
空指针原因:
1、因为遍历到C盘下的“System Volume Information”目录时,这是每个分区下都有的系统目录,用户没有访问权限调用listFiles方法会返回null。 2只要碰见空文件夹listFiles方法就返回null,所以会报空指针异常。
解决办法是if (arrf!=null)就行了。
下面是JDK文档中关于listFiles方法:
抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
- import java.io.*;
- public class FileDemo
- {
- public static void main(String[] args)
- {
- File f= new File("c:\\");
- showDir(f);
- }
- public static void showDir(File f)
- {
- File[] arrf=f.listFiles();
- if (arrf!=null)
- {
- for(int x=0;x<arrf.length;x++)
- {
- if (arrf[x].isDirectory())
- {
- showDir(arrf[x]);
- }
- else
- {
- System.out.println(arrf[x].toString());
- }
- }
- }
- }
- }
复制代码
|