Java中File类delete()方法无法删除本地文件问题如何解决
故障排查与解决方法
- 检查文件是否被占用
File类的delete()方法在文件被其他进程/当前程序占用时会直接返回删除失败,不会抛出异常。首先确认你要删除的file001.txt没有被记事本、Office等第三方软件打开,其次检查代码中所有读写该文件的逻辑,确认FileInputStream、FileOutputStream、BufferedReader等流对象使用完毕后已经调用close()方法关闭,推荐使用try-with-resources语法自动管理流的关闭,避免遗漏。 - 核对文件路径是否匹配
你当前使用相对路径创建File对象,Eclipse默认的工作目录为项目根目录,你可以在removeFile方法中新增一行日志打印文件绝对路径,确认路径是否和你预期要删除的文件路径一致:System.out.println("待删除文件绝对路径:" + file.getAbsolutePath()); - 检查目录操作权限
如果你的项目存放在C盘Program Files、Windows等需要管理员权限的系统目录下,普通权限启动的Eclipse没有文件删除权限,右键点击Eclipse快捷方式选择「以管理员身份运行」后重试即可。 - 确认输入的ID是否正确
如果你的Scanner之前调用过nextInt()、nextDouble()等方法,会留下未读取的换行符,导致后续nextLine()读取到空字符串。你可以在拿到输入的ID后打印内容确认:String s=sc.nextLine(); System.out.println("读取到的员工ID为:" + s); - 替换为带异常抛出的删除方法
可以改用Java NIO的Files.delete()方法替代file.delete(),该方法会在删除失败时抛出具体的异常信息,直接定位问题原因,参考修改后的代码:import java.nio.file.Files; import java.nio.file.Paths; class Employee_Remove { public void removeFile(String ID) { try { Files.delete(Paths.get("file" + ID + ".txt")); System.out.println("\nEmployee has been removed Successfully"); } catch (Exception e) { System.out.println("\n删除失败,错误原因:" + e.getMessage()); } } }
内容的提问来源于stack exchange,提问作者user3172464
相关产品推荐
相关产品推荐

