这是我的一段代码。有了这个我选择一个驱动器,在这种情况下说F驱动器。然后在执行我试图删除该文件夹中的文件时,虽然正在删除文件(正确输入时),但delete()返回false。我可以知道为什么会这样吗?
System.out.println("Enter file to be deleted:");
String del = sc.nextLine(); //give file name as string with extension
File delFile = new File(del); //convert string to file type
for (File fs: listOfFiles) {
if (fs.getName().compareTo(delFile.getName()) == 0) {
System.out.println(fs.getName());
System.out.println("Inside loop");
boolean dele = fs.delete();
System.out.println("Successful/unsucceful: " + fs.getName() + "..." + fs.delete());
} else
System.out.println("invalid : " + fs.getName());
}
答案 0 :(得分:6)
您的问题是,您已经删除后第二次致电fs.delete()
。因为它不再存在,所以不能删除
只需调用您之前设置的布尔值:
System.out.println("Successful/unsucceful: " + fs.getName() + "..." + dele);
另外,作为旁注。我只会使用fs.getName().equals(delFile.getName())
而不是compareTo
答案 1 :(得分:3)
因为您要拨打delete
两次。第二次因为第一次被删除而导致错误。
更改此
System.out.println("Successful/unsucceful: " + fs.getName() + "..." + fs.delete());
到
System.out.println("Successful/unsucceful: " + fs.getName() + "..." + dele);