import java.io.File;public class list { public static void main(String[] args) {
File f=new File("E:"+File.separator+"MQ");   //電腦上MQ文件目錄下是沒有文件的
File ff[]=f.listFiles();
  if(ff==null){
  System.out.println("文件為空");
  
  }
  for(File x:ff){
  System.out.println(x);

}
}}
一直搞不懂為什麼f目錄下什麼也沒有,為什麼ff不會為空呢???如果我把new File(這裡設一個文件而不是目錄時)就會執行“文件為空”

解决方案 »

  1.   

    import java.io.File;public class ListFile {
    public static void main(String[] args) {
      File file=new File("C:"+File.separator);
      Lis(file);
    }
    public static void Lis(File file){
    if(file.isDirectory()){
    System.out.println(file);
    File f[]=file.listFiles();

    for(int i=0;i<f.length;i++){
    Lis(f[i]);
    }

    }
    else{
    System.out.println(file);

    }}
    }還有就是這個程序為什麼還會有出現空指針報錯呢,大部份沒有事。什麼情況下會出現空指針
      

  2.   

    for(File x:ff) 运行这句话的时候是空的 因为ff为空 
      

  3.   

    查了下百度,看了很多資料終於知道答案了,for(File x:ff)   ff是不為空的只是ff.length==0罷了
    要是說new File(裡是一個文件的話)那listFiles出來的ff就為空,要是是個文件夾是不為空,只是length==0
      

  4.   

    File ff[]=f.listFiles();
    判断一下,没有文件那就是0,怎么可能是null呢
    你自己debug分析一下不就知道了
      

  5.   

    当没有权限访问文件夹时,listFiles也会返回null
      

  6.   

    香港公司啊繁體做測試員,順便在學JAVA開發。
      

  7.   


    呵呵楼主的焦急心情可以理解。
     
    listFiles()或者listXXX()系列的方法,其实都是通过list()方法来完成的。
    ff.list()方法是否返回null,首先判权限,若权限不够,则返回null。若权限够了,看ff.exists()是否返回true。若ff.exists()返回false,则它返回null。