public static void delete(File file){
     try{
        if(file.exists()){ 
         if(file.isFile()){ 
          file.delete(); 
         }else if(file.isDirectory()){ 
          File files[] = file.listFiles(); 
          for(int i=0;i<files.length;i++){ 
           files[i].delete(); 
          } 
         } 
         file.delete(); 
        }else{ 
         System.out.println("所删除的文件不存在!"+'\n'); 
        } 
     }
     catch(Exception e){
     System.out.print("unable to delete the folder!");
     }
     }
这个是delete的方法,在main函数里面我这样调用的     File files = new File(des);//要删除的目录路径des = "C:/tempfile"
     delete(files);单独运行delete方法的时候,可以删除tempfile文件夹,但是在main里面调用就删不掉~不知道是什么原因造成的呢?大家帮帮忙吧~

解决方案 »

  1.   

    额,单独运行?如何单独运行,你程序的入口就是main函数嘛.你应该给出完整而简洁的代码,只给出片段,不好找原因嘛.
    还有,你的程序中存在一个小问题,当你想删除目录的时候,你曾试图先将目录中的文件及子目录删除,但是,如果子目录里面还有东东,嘿嘿,就不行了.可以使用递归算法,或者用循环及自建堆栈实现.
      

  2.   

    public static void main(String[] args) {
    File files = new File("d:/tmp");
    delete(files);
    } public static void delete(File file) {
    try {
    if (file.exists()) {
    if (file.isFile()) {
    file.delete();
    } else if (file.isDirectory()) {
    File files[] = file.listFiles();
    for (int i = 0; i < files.length; i++) {
    files[i].delete();
    }
    }
    file.delete();
    } else {
    System.out.println("所删除的文件不存在!" + '\n');
    }
    } catch (Exception e) {
    System.out.print("unable to delete the folder!");
    }
    }可以删掉啊
      

  3.   

    import java.io.*;
    public class Test4{
    public static void main(String[] args){
           File files = new File("E:\\java\\解答\\123.txt");//要删除的目录路径des = "C:/tempfile"
            delete(files);
    }
            public static void delete(File file){
                try{
                       if(file.exists()){ 
                            if(file.isFile()){ 
                             file.delete(); 
                            }else if(file.isDirectory()){ 
                             File files[] = file.listFiles(); 
                             for(int i=0;i<files.length;i++){ 
                              files[i].delete(); 
                             } 
                            } 
                            file.delete(); 
                           }else{ 
                            System.out.println("所删除的文件不存在!"+'\n'); 
                           } 
                }
                catch(Exception e){
                    System.out.print("unable to delete the folder!");
                }
                }
    }//刚试了下可以额...没错吧..
      

  4.   

    同意2楼的看法。
    1、main()是程序的入口,你入口没有怎么来单独运行该函数的?
    2、有可能文件下下面还有文件夹,所以因该用递归来进行处理。稍微改了下,你可以参考下。public class TestDemo06 { public static void main(String args[]) {
    File file = new File("G:\\kstest\\tmp");
    delete(file); } public static void delete(File file) {
    try {
    if (file.exists()) {
    if (file.isFile()) {
    file.delete();
    } else if (file.isDirectory()) {
    File files[] = file.listFiles();
    for (int i = 0; i < files.length; i++) {
    delete(files[i]);
    }
    file.delete();
    }
    } else {
    System.out.println("所删除的文件不存在!" + '\n');
    }
    } catch (Exception e) {
    System.out.print("unable to delete the folder!");
    }
    }}
      

  5.   


    发现问题了,是因为files[i].delete不起作用,换成递归的delete(files[i])就解决了~