展开全部
你程序中有个错误62616964757a686964616fe58685e5aeb931333335313863,并且逻辑有问题,代码修改了,如下:public class Test2001 {
private static String s;
public static void main(String[] args) {
test1();// 删除文件
}
private static void test1() {
System.out.println("请输入你要删除的文件名");
s = new Scanner(System.in).next();
File file = new File("E:/");
deleteFile(file);
}
private static void deleteFile(File file) {
File Array[] = file.listFiles();
for (File f : Array) {
if (f.isFile()) {// 如果是文件
if (f.getName().equals(s)) {
f.delete();
System.out.println("删除文件成功");
return;
}
}
}
System.out.println("删除文件失败,该文件不存在");
}
}
1.错误
判断文件名是否相等:if(f.getName()==s)
字符串判断值是否相等使用equals方法,==是比较内存地址,所以你的for一直匹对不到相同文件
2. 逻辑错误
private static void deleteFile(File file) {
File Array[] = file.listFiles();
for (File f : Array) {
if (f.isFile()) {// 如果是文件
if (f.getName() == s) { // 这里已经在比较文件是否相等
f.delete();
System.out.println("删除文件成功");
break;
} else {// 如果不是要删除的文件,跳到下一次循环
continue;
}
} else {// 如果不是文件
deleteFile(file); // 这里
}
}
System.out.println("删除文件失败,该文件不存在");
}
if (f.isFile()) {// 如果是文件
}
} else {// 如果不是文件
deleteFile(file); // 这里不需要再次deleteFile,只会迭代,按钮的逻辑,不是文件,就跳过,应该是continue
}
亲,如果回答满意,请即时采纳,你的理解是我回答的动力,谢谢!!!