黑马程序员技术交流社区

标题: 删除文件 [打印本页]

作者: 恩恩    时间: 2013-12-22 14:08
标题: 删除文件
在java中现在要做一个这样的功能,要删除一个文件,如果这个文件就是一个单独的文件直接删除,但是如果这个文件是一个目录,如何删除这个目录。我写了删除文件的代码。谁能给我讲一下如何删除整个目录。
  1. public boolean delete( File file){
  2.         if(file != null){
  3.             if( file.isFile()){
  4.                 return deleteFile(file);
  5.             }else{
  6.                 return deleteDir(file);
  7.             }
  8.         }
  9.         return false ;
  10.     }

  11. private boolean deleteFile(File file){
  12.         return  file.delete() ;
  13.     }
复制代码

上面是删除文件的,谁能给我讲一下如何删除整个目录。


作者: 青菜白汤    时间: 2013-12-22 14:57
  1.   import java.io.File;
  2.   /**
  3.   *  
  4.   * 删除文件或目录
  5.   */

  6.   public class DeleteFileUtil {
  7.   /**
  8.   * 删除文件,可以是单个文件或文件夹

  9.   * @param   fileName    待删除的文件名
  10.   * @return 文件删除成功返回true,否则返回false
  11.   */

  12.   public static boolean delete(String fileName){
  13.   File file = new File(fileName);
  14.   if(!file.exists()){
  15.   System.out.println("删除文件失败:"+fileName+"文件不存在");
  16.   return false;
  17.   }else{
  18.   if(file.isFile()){
  19.   return deleteFile(fileName);
  20.   }else{
  21.   return deleteDirectory(fileName);
  22.   }

  23.   }

  24.   }

  25.   /**
  26.   * 删除单个文件
  27.   * @param   fileName    被删除文件的文件名
  28.   * @return 单个文件删除成功返回true,否则返回false
  29.   */

  30.   public static boolean deleteFile(String fileName){

  31.   File file = new File(fileName);
  32.   if(file.isFile() && file.exists()){
  33.   file.delete();
  34.   System.out.println("删除单个文件"+fileName+"成功!");
  35.   return true;
  36.   }else{
  37.   System.out.println("删除单个文件"+fileName+"失败!");
  38.   return false;
  39.   }

  40.   }

  41.   /**
  42.   * 删除目录(文件夹)以及目录下的文件

  43.   * @param   dir 被删除目录的文件路径
  44.   * @return  目录删除成功返回true,否则返回false
  45.   */

  46.   public static boolean deleteDirectory(String dir){

  47.   //如果dir不以文件分隔符结尾,自动添加文件分隔符

  48.   if(!dir.endsWith(File.separator)){

  49.   dir = dir+File.separator;

  50.   }
复制代码

作者: 松毛    时间: 2013-12-22 15:36
Java中删除目录是先删除目录中的文件的,如果文件删除了,最后再将目录删除掉。
  1. package com.itheima.test;

  2. import java.io.File;

  3. public class Test09 {

  4.         public static void main(String[] args) {
  5.                 File f = new File("D:\\Java test");
  6.                 deleteDir(f);
  7.         }


  8.         public static void  deleteDir(File dir){
  9.                 File[] files = dir.listFiles();
  10.                 for(File file: files){
  11.                         if(file.isDirectory()){
  12.                                 deleteDir(file);     //如果该文件是目录则继续调用该函数
  13.                                 //System.out.println(file + "**file**" + file.delete());
  14.                         }else
  15.                                 System.out.println(file + "**file**" + file.delete()); //如果该文件不是目录则直接删除掉该文件;
  16.                 }
  17.                 System.out.println(dir + "---Dir---" + dir.delete());  //目录中所有的文件删除后则再将目录删除;
  18.         }
  19. }
复制代码


作者: 恩恩    时间: 2013-12-22 16:55
松毛 发表于 2013-12-22 15:36
Java中删除目录是先删除目录中的文件的,如果文件删除了,最后再将目录删除掉。
...

谢谢,我好好的看看
作者: 恩恩    时间: 2013-12-22 16:56
青菜白汤 发表于 2013-12-22 14:57

谢谢,你删除目录用的递归,我好好的看看。




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