黑马程序员技术交流社区

标题: 【黑马云青年 胡浩】一个关于file的delete() [打印本页]

作者: 胡浩    时间: 2013-5-25 18:12
标题: 【黑马云青年 胡浩】一个关于file的delete()
本帖最后由 胡浩 于 2013-5-25 20:21 编辑
  1. <hr class="l">package com.File;

  2. import java.io.*;

  3. public class fileDemo {

  4.         /**
  5.          * @param args
  6.          * @throws IOException
  7.          */
  8.         public static void main(String[] args) throws IOException {
  9.                
  10.                 createDirectory();
  11.                 createNew();
  12.                 delete();
  13.                
  14.         }
  15.         /*
  16.          * 创建一个目录
  17.          */
  18. private static void createDirectory() {
  19.                 File f=new File("abc/ab/a");
  20.                 f.mkdirs();
  21.         }
  22. /*
  23. * 删除文件,那么如何删除整个abc目录呢?
  24. */
  25. private static void delete() {
  26.         File f=new File("abc/ab/a/a.txt");
  27.         f.delete();
  28.         
  29.                
  30.         }
  31. /*
  32. * 创建一个新的文件
  33. */
  34.         private static void createNew() throws IOException {
  35.                 File f=new File("abc/ab/a/a.txt");
  36.                 f.createNewFile();
  37.                
  38.         }
  39.         

  40. }
复制代码

F
File的delete方法只能删除文件或者是空的目录,如果目录中有其他目录存在,就无法删除。那么怎么删除这个目录呢?帮忙回答下,不盛感激!!!

作者: SOAR    时间: 2013-5-25 18:33
一层一层删啊,从最里面的开始删。
作者: 胡浩    时间: 2013-5-25 19:21
SOAR 发表于 2013-5-25 18:33
一层一层删啊,从最里面的开始删。

可以写着看看嘛?
作者: 石贤芝    时间: 2013-5-25 19:31
毕老师的视频里面有讲深度删除目录,下面是一个代码示例:
  1. // 删除一个带内容的目录。

  2. public class MyDeleteFileDemo {
  3.         public static void main(String[] args) {

  4.                 File dir = new File("e:\\附件代码练习");
  5.                
  6.                 removeDir(dir);
  7.         }

  8.         public static void removeDir(File dir) {

  9.                 //思路:列出目录的所有的内容,如果是子目录递归;如果是内容,删掉。
  10.                
  11.                 File[] files = dir.listFiles();
  12.                
  13.                 for (File file : files) {
  14.                         if (file.isDirectory())
  15.                                 removeDir(file);
  16.                         else
  17.                                 file.delete();
  18.                 }
  19.                
  20.                 dir.delete();
  21.                
  22.         }
  23. }
复制代码

作者: 胡浩    时间: 2013-5-25 20:07
石贤芝 发表于 2013-5-25 19:31
毕老师的视频里面有讲深度删除目录,下面是一个代码示例:

:victory:谢了
作者: 石贤芝    时间: 2013-5-25 20:14
胡浩 发表于 2013-5-25 20:07
谢了

:handshake
作者: 袁梦希    时间: 2013-5-25 20:22
石贤芝 发表于 2013-5-25 19:31
毕老师的视频里面有讲深度删除目录,下面是一个代码示例:

:)回答的很好
作者: 石贤芝    时间: 2013-5-25 20:24
袁梦希 发表于 2013-5-25 20:22
回答的很好

:)  :handshake  
作者: SOAR    时间: 2013-5-26 18:49
胡浩 发表于 2013-5-25 19:21
可以写着看看嘛?

/**
     * 递归删除文件
     * @param targetFile 要删除的文件
     */
        public static void deleteFile(File targetFile){
               
                if(targetFile.exists()){
                        //先判断是否存在
                        String fileName = targetFile.getName();
                        File parentFile = targetFile.getParentFile();
                        if(targetFile.delete()){
                                //如果删除成功 就说明targetFile是一个文件 或者是一个空目录
                                System.out.println(fileName+" was deleted!");
                                //现在应该删除它的父亲
                                if(parentFile!=null){
                                        deleteFile(parentFile);
                                }
                               
                        }else{
                                //否则就需要向下递归 删除
                                for(File file:targetFile.listFiles()){
                                        deleteFile(file);
                                }
                        }
                       
                }else{
                        System.out.println("该文件不存在或已被删除");
                }
        }




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