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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.io.File;

  2. public class FileTraversalDemo {

  3.         public static void main(String[] args) {
  4.                 File f = new File("E:\\123");
  5.                 Traverse.removeall(f);
  6.         }
  7. }

  8. class Traverse {
  9.         public static void removeall(File f){
  10.                 if(f.isDirectory()){
  11.                         File[] farr=f.listFiles();
  12.                         for(int i=0;i<f.length();i++){
  13.                                 removeall(farr[i]);
  14.                         }
  15.                         System.out.println(f+":"+f.delete());
  16.                 }
  17.                 else{
  18.                         System.out.println(f+":"+f.delete());
  19.                 }}
复制代码
我是想实现删除的功能,可是功能实现不了,能运行,但是删除不了,找了好久也不知道哪有问题





评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

9 个回复

倒序浏览
数组越界了
回复 使用道具 举报
把f.length()该做farr.length() 就ok了
回复 使用道具 举报
本帖最后由 曹睿翔 于 2013-6-14 23:31 编辑
  1. /*
  2. 思想:
  3. 递归遍历指定文件夹,遍历到最内层的文件夹时,删除文件夹中所有后,再删除该文件夹
  4. 然后由内向外删除,因为只有文件夹为空时才能删除该文件夹.
  5. */

  6. import java.io.File;

  7. public class FileTraversalDemo {

  8.         public static void main(String[] args) {
  9.                 File f = new File("E:\\123");
  10.                 Traverse.removeall(f);
  11.         }
  12. }

  13. class Traverse {
  14.         public static void removeall(File f){
  15.                        
  16.                       File[] farr=f.listFiles();
  17.                       if(farr==null || farr.length==0){//f为文件或f为空文件夹
  18.                           f.delete();
  19.                           return;
  20.                          }
  21.                       else{
  22.                         for(int i=0;i<farr.length;i++){//farr.length
  23.                                 //需要判断遍历到的是文件还是文件夹
  24.                                 if(farr.isDirectory())
  25.                                   removeall(farr[i]);
  26.                                 else
  27.                                   farr[i].delete();
  28.                         }
  29.                         System.out.println(f+":"+f.delete());//删除完文件夹中文件,删除该文件夹
  30.                      }
  31. }
  32.                
  33.                
复制代码

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报

找了半天编辑,没找到...
把上面的f.isDirectory()->farr.isDirectory()
回复 使用道具 举报
  1. <p>package file;
  2. import java.io.File;

  3. public class FileTraversalDemo {

  4.     public static void main(String[] args) {
  5.         File f = new File("E:\\123");
  6.         Traverse.removeall(f);
  7.     }
  8. }

  9. class Traverse {
  10.     public static void removeall(File f){
  11.         if(f.isDirectory()){
  12.             File[] farr=f.listFiles();
  13.             System.out.println(farr.length);
  14.            <font color="red"> for(int i=0;i<farr.length;i++){</font>
  15.                     removeall(farr[i]);
  16.             }
  17.             System.out.println(f+":"+f.delete());
  18.         }
  19.         else{
  20.             System.out.println(f+":"+f.delete());
  21.         }
  22.     }
  23. }</p><p> </p><p><font color="red">【运行结果】:</font></p><p><font color="red">1
  24. E:\123\a\a1\2.txt:true
  25. E:\123\a\1.txt:true
  26. E:\123\a:true
  27. E:\123\b:true
  28. E:\123:true</font></p>
复制代码

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1

查看全部评分

回复 使用道具 举报
楼主您好.如果问题得到解决的话.请及时将主题改成已解决哦~
回复 使用道具 举报
孙百鑫 发表于 2013-6-15 06:58
楼主您好.如果问题得到解决的话.请及时将主题改成已解决哦~

怎么老是找不到编辑在哪啊,没法改啊

捕获.PNG (80.63 KB, 下载次数: 0)

捕获.PNG
回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
一眼就看出来了 数组长度属性 是arr。length   【【【【不带括号()】】】】】】
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马