黑马程序员技术交流社区

标题: File中的l问题 [打印本页]

作者: 马林康    时间: 2012-6-28 14:03
标题: File中的l问题
本帖最后由 马林康 于 2012-6-28 14:28 编辑

想列出所有磁盘下的文件名 代码如下
  1. public class FileDemo3 {
  2.         public static void main(String[] args){
  3.                 File[] files =File.listRoots();
  4.                 for(File file:files){
  5.                         System.out.println(file);
  6.                         String[] filenames =file.list();
  7.                         for(String filename:filenames){
  8.                                 System.out.println(filename);
  9.                         }
  10.                 }
  11.         }

  12. }
复制代码
但是通过listRoot方法 也列出了驱动器 ,驱动器里没文件 报空指针异常 怎么解决?

作者: 陆强强    时间: 2012-6-28 14:19
我运行没问题,楼看下自己是不是导包了
import java.util.*;
还有如果只是一个单独的Java文件就把class前面的public,然后再试试
作者: 李天甲    时间: 2012-6-28 14:20
  1. import java.io.File;
  2. class FileDemo3 {
  3.         public static void main(String[] args) {
  4.                 File[] files = File.listRoots();
  5.                 String[] filenames = null;
  6.                 for (File file : files) {
  7.                         //System.out.println(file);
  8.                         filenames = file.list();
  9.                         if(filenames!=null)
  10.                         for (String filename : filenames) {
  11.                                 if (filename!=null)
  12.                                 System.out.println(filename);
  13.                         }
  14.                 }
  15.         }
  16. }
复制代码
高级for循环,当下一个值为null的时候也会被赋值,
你只需要判断下返回值可不可能为空就行了

作者: 吴琼    时间: 2012-6-28 14:22
既然出现看异常我们可以尝试着
try{
}catch(需要处理的异常){
处理方式:
}
下面是我写的简单的处理方式
package Test_1;
import java.io.File;
public class FileDemo3 {
    public static void main(String[] args){
     File[] files=null;
      files =File.listRoots();
            for(File file:files){
                    System.out.println(file);
                    String[] filenames =file.list();
                    try{
                     for(String filename:filenames){
                            System.out.println(filename);
                     }
                }catch( java.lang.NullPointerException e){
                 System.out.println("磁盘为空");
                }
                    
            }
    }
}

作者: 胡文杰    时间: 2012-6-28 14:33
if(file.canExecute()){
         String[] filenames =file.list();
         for(String filename:filenames){
        System.out.println(filename);
         }
}
这样就行了,可能因为你的电脑有个G盘吧,就是DVD驱动器,所以会报个空异常
作者: 李伟    时间: 2012-6-28 14:56
public class FileDemo3 {
        public static void main(String[] args){
                File[] files =File.listRoots();
                for(File file:files){
                                              if(!file.exists())
                                                  continue;   
     //加上这个判断语句,如果此路径名表示的文件或目录不存在,则进行下一次循环               
                           System.out.println(file);
                        String[] filenames =file.list();
                        for(String filename:filenames){
                                System.out.println(filename);
                        }
                }
        }

}
作者: 李天甲    时间: 2012-6-29 07:42
李伟 发表于 2012-6-28 14:56
public class FileDemo3 {
        public static void main(String[] args){
                File[] file ...

嗯,师者,传道授业解惑.....
学习了..




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2