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