Java程序使用JButton删除目录



我让我的程序在指定的文件中删除文件,但是后来我决定删除整个目录!这是我到目前为止的代码,按下按钮时它没有任何作用...(并且按钮确实有一个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());

也确实打印了"用户"目录中的每个文件,但不会删除它们。它也不会删除文件夹本身。请帮忙!任何建议或代码源都很棒!

delete()返回 boolean您忽略

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

时才

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

要获得原因,请使用#delete(path)删除目录,因为如果由于某种原因无法删除文件。

引用文件#delete()

的javadoc

请注意,文件类定义了删除方法 当无法删除文件时,IOException。这对于错误很有用 报告并诊断为什么不能删除文件。

我在我的计算机中运行了您的代码,它可以很好地工作。也许您无权删除目标目录。您可以使用我的代码测试以找出哪个文件的删除操作是失败。

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

最新更新