Java程序用JButton删除目录

时间:2014-01-24 08:22:15

标签: java swing file-io actionlistener delete-file

我的程序删除了指定文件中的文件,但后来我决定删除整个目录!这是我的代码到目前为止,按下按钮时没有任何作用...(并且按钮上有一个ActionListener)。

public void actionPerformed(ActionEvent event) {
    if (event.getSource().equals(a)) {
        int ans = JOptionPane.showConfirmDialog(null, "You're about to premenently delete this account! Are you sure you want to continue?", "Caution!!",  JOptionPane.YES_NO_OPTION);
        if (ans == JOptionPane.YES_OPTION){
            //delete
            File directory = new File("FileIO Plug-Ins\\Accounts\\" + user);
            deleteDirectory(directory);
        }
        run();
    }
}

public boolean deleteDirectory(File directory) {
    if(directory.exists()){
        File[] files = directory.listFiles();
        if(files != null){
            for(int i = 0; i < files.length; i++) {
                if(files[i].isDirectory()) {
                    deleteDirectory(files[i]);
                }
                else {
                    System.out.println("deleting: " + files[i].getName());
                    files[i].delete();
                }
            }
        }
    }
    return(directory.delete());
}

我制作的for循环确实找到了指定文件夹中的所有文件和行

System.out.println("deleting: " + files[i].getName());

还会打印'user'目录中的每个文件,但不会删除它们。也不删除文件夹本身。 请帮忙!任何建议或代码来源都会很棒!

2 个答案:

答案 0 :(得分:1)

delete()返回<{>您忽略的boolean值。

true - 当且仅当文件或目录被成功删除时

false - 如果某种原因无法删除

要了解原因,请使用Files#delete(Path)删除目录,因为如果由于某种原因无法删除该文件,则会出现异常。

File#delete()

引用JavaDoc
  

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

答案 1 :(得分:0)

我在我的机器上运行了你的代码,它运行良好。也许你没有删除目标目录的权限。你可以用我的代码测试找出哪个文件的删除操作失败。

public static boolean deleteDirectory(File directory) {
    if(directory.exists()){
        File[] files = directory.listFiles();
        if(files != null){
            for(int i = 0; i < files.length; i++) {
                if(files[i].isDirectory()) {
                    deleteDirectory(files[i]);
                }
                else {
                    if(files[i].delete()) {
                        System.out.println("Successfully delete: " + files[i].getAbsolutePath());
                    } else {
                        System.out.println("Failed to delete: " + files[i].getAbsolutePath());                          
                        return false;
                    }
                }
            }
        }
    }
    if(directory.delete()){
         System.out.println("Successfully delete: " + directory.getAbsolutePath());
         return true;
    } else {
        System.out.println("Failed to delete: " + directory.getAbsolutePath());                         
        return false;
    }
}