为什么file.delete()不起作用?

时间:2014-05-19 12:16:21

标签: java file

我有一个名为“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

2 个答案:

答案 0 :(得分:1)

从文档(Java API)我得到以下内容:

public boolean delete()

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

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

要获得进一步的帮助,你应该使用java.nio.file.Files它有方法walkFileTree并删除你可以使用这些方法删除目录下的所有文件。

答案 1 :(得分:0)

试试这个

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();  
            }  
         }