我的程序删除了指定文件中的文件,但后来我决定删除整个目录!这是我的代码到目前为止,按下按钮时没有任何作用...(并且按钮上有一个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'目录中的每个文件,但不会删除它们。也不删除文件夹本身。 请帮忙!任何建议或代码来源都会很棒!
答案 0 :(得分:1)
delete()
返回<{>您忽略的boolean
值。
true
- 当且仅当文件或目录被成功删除时
false
- 如果某种原因无法删除
要了解原因,请使用Files#delete(Path)删除目录,因为如果由于某种原因无法删除该文件,则会出现异常。
引用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;
}
}