【问题标题】:why doesnt file.delete() work? [duplicate]为什么 file.delete() 不起作用? [复制]
【发布时间】:2014-07-07 09:36:41
【问题描述】:

我有一个名为“madhura”的目录,我正在尝试删除它。目录“madhura”包含另一个目录“anyname”和一个文本文件。“anyname”还包含一个目录。代码没有给出错误我已经写了,但是什么都没有删除。

请帮我解决这个问题

代码:

package testjava;

import java.io.File;
import java.io.IOException;

public class DeleteDirectory {
    public static void main(String args[])
    {
        File f = new File("C:\\madhura");
        try {
            deleteDirectory(f.list());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static void deleteDirectory(String[] path) throws Exception
    {
        System.out.println("Inside delteDirectory");
        int i=0;
        int count = path.length;
        System.out.println(path.length);
        while(i<count)
        {
        File f = new File(path[i]);
        System.out.println("file "+f+" isdiretory "+f.isDirectory());
        if(f.isDirectory())
        {
            System.out.println("Inside f.isdirectory");
            deleteDirectory(f.list());
            f.delete();
        }
        else{

            System.out.println("deleting "+f);
            System.out.println(f.delete());

        }
        i++;
        }
    }
}

输出:

Inside delteDirectory
2
file anyname isdiretory false
deleting anyname
false
file New Text Document.txt isdiretory false
deleting New Text Document.txt
false

【问题讨论】:

  • 你可以使用 File.list() 方法列出目录中的所有文件名,然后 file.delete 删除相同的。

标签: java file


【解决方案1】:

试试这个

File file = new File("C:\\Example");        
    String[] myFiles;      
        if(file.isDirectory()){  
            myFiles = file.list();  
            for (int i=0; i<myFiles.length; i++) {  
                File myFile = new File(file, myFiles[i]);   
                myFile.delete();  
            }  
         }  

【讨论】:

    【解决方案2】:

    从文档(Java API)我得到以下信息:

    公共布尔删除()

    删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能被删除。

    请注意,Files 类定义了 delete 方法以在无法删除文件时抛出 IOException。这对于错误报告和诊断无法删除文件的原因很有用。

    为了进一步的帮助,您应该使用 java.nio.file.Files 它有方法 walkFileTree 和 delete,您可以使用这些方法删除目录下的所有文件。

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 2013-03-05
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多