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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

经过不懈调试  终于解决  就想发一下

1 个回复

倒序浏览
public class Demo_GetFiles {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
             File dir=new File("G:\\");
             //getFiles(dir); //依据此进行分析  中间出现了空指针
             listToAll(dir);
        }
     
        public static void listToAll(File dir) {
                System.out.println("目录:"+dir+"------");
                File [] files=dir.listFiles();
                //if (files!=null) //这里判断非空就是为了去除隐藏文件
                        //return; //加上就会只遍历一个盘符 说明有空   整个数组中包含到隐藏文件
                        //然后放到数组中但是隐藏文件没有访问权限所以for进行遍历是无法访问就空指针了
                        //因此在加上canWrite() canRead()应该更好
                        
/*listFiles  public File[] listFiles()
* 如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,
* 或者发生 I/O 错误,则返回 null。
      可能盘里有空的目录。
      否则返回一个 File 对象数组,
      每个数组元素对应目录中的每个文件或目录。
     经过1个小时的调试,终于解决
      因此需要for循环前面用个if语句判断是否files为null即可解决。*/               
                /* if (files.length==0) {
                                return ;
                        }*/
                 for (File file : files) {        
                           /* if(file.isHidden()){
                                    return ;
                            }*/
                          if (file.isDirectory()&&!file.isHidden()&&file.canRead()&&file.canWrite()) {
                                  //加上非隐藏 这样不会遍历到隐藏文件  是否可读 可写 这样就可以解决了
                                   
                                 listToAll(file);
                        }else {
                                System.out.println("文件:"+file.getName());
                        }
                        
                          //System.out.println(file.getName()+"...........");
                }
        
}        


        public static void getFiles(File dir) {
                File [] files=dir.listFiles();
                 for (File file : files) {
                          if (file.isDirectory()) {
                                  File[] filess=file.listFiles();
                                  for (File file2 : filess) {                                          
                                           System.out.println(file2.getName());
                                }
                        }else{
                          System.out.println("-------------------");
                          System.out.println(file.getName());
                        }
                }
        }

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