A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苏克 中级黑马   /  2013-1-20 17:29  /  2014 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-22 11:20 编辑

public static void main(String[] argv) {
  File dir=new File("F://");
  DiGui.showDir(dir);
}
public static void showDir(File dir){
  File[] files=dir.listFiles();
  for(File f:files){
   
   if(f.isDirectory()){
    showDir(f);
   }else{
    System.out.println(f);
   }
  }
}
每次运行就会出现空指针异常。

但是当把File dir=new File("F://tomcat");的时候就没有问题。
求高手解决。

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 赞一个!

查看全部评分

8 个回复

倒序浏览
这个我试了一下,没有问题
回复 使用道具 举报
我测试下先。
回复 使用道具 举报
同求高手解答。
回复 使用道具 举报
本帖最后由 黑马张英涛 于 2013-1-20 18:15 编辑

好像是访问Config.msi的时候出的问题,这个文件直接点击拒绝访问。
回复 使用道具 举报
代码没问题。
是除了C 都有RECYCLER
RECYCLER作的怪吧。
回复 使用道具 举报
本帖最后由 arno942 于 2013-1-20 18:55 编辑

如果直接访问盘符下,不判断会出空指针,因为盘符下有的文件是不允许你访问的,当访问它的时候 会返回null ,如果访问F:\\xxx就不用判断,直接盘符下就要判断了
  1. import java.io.File;

  2. public class Test {
  3.         public static void main(String[] argv) {
  4.                 File dir = new File("F://");
  5.                 showDir(dir);
  6.         }

  7.         public static void showDir(File dir) {
  8.                 File[] files = dir.listFiles();
  9.                 if (files != null) {
  10.                         for (File f : files) {

  11.                                 if (f.isDirectory()) {
  12.                                         showDir(f);
  13.                                 } else {
  14.                                         System.out.println(f);

  15.                                 }
  16.                         }
  17.                 }
  18.         }
  19. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

回复 使用道具 举报
这个程序我也试了下  各个盘都试了下 都能运行  不知道什么样的文件可以导致出现NULL的情况呢 Config.msi 不能导致  RECYCLER没试 我的是NTFS分区 没有这样的文件 高手请进啊
回复 使用道具 举报
当遍历的文件没有访问权限时会返回空指针,在for循环之前做一次判断。
具体如下图所示:


评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马