至余 2016-11-14 10:58 采纳率: 100%
浏览 1351
已采纳

我用java写的深层删除D盘下所有空文件夹代码为什么老是报错呢?

public Class DeleteDir{
public static void main(String[]args){
File dir = new File("D:\");
deletedir(dir);
}

    public static void deletedir(File dir){
    File[] files = dir.listFiles();
        if(files.length==0)
                dir.delete;
        else
            for(File file:files){
                    if(file.isDirectory())
                            deletedir(file);
                    else
                            continue;
            }
    }

}

图片说明
功能上确实把一些空文件夹删除了,我也没去看有没有全部删除,但是运行一段时间之后会在判断数组长度是否为0那里报错。这是为什么呢?是因为系统文件或其他什么的权限不够吗?

  • 写回答

2条回答 默认 最新

  • _1_1_7_ 2016-11-15 09:16
    关注

    多看看api文档,就知道了

     listFiles
    public File[] listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。 
    如果此抽象路径名并不表示一个目录,则此方法将返回 null。否则,为目录中的每个文件或目录返回一个 File 对象数组。表示目录本身及其父目录的路径名不包括在结果中。得到的每个抽象路径名都是根据此抽象路径名,使用 File(File, String) 构造方法构造。所以,如果此路径名是绝对路径名,则得到的每个路径名都是绝对路径名;如果此路径名是相对路径名,则得到的每个路径名都是相对于同一目录的路径名。 
    
    不保证所得数组中的相同字符串将以特定顺序出现,特别是不保证它们按字母顺序出现。 
    
    
    返回:
    表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组。如果目录为空,则数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。 
    
      public static void deletedir(File dir){
        File[] files = dir.listFiles();
            if(files==null)return;//如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
            if(files.length==0)//空文件夹
                    dir.delete;
            else
                for(File file:files){
                        if(file.isDirectory())
                                delitedir(file);
                        else
                                continue;
                }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分