Java读取c:\Java\teste.txt文件时触发FileNotFoundException异常求助
问题排查原因及解决方法
常见触发原因
- 文件路径/名称不匹配
- Windows默认隐藏已知文件扩展名,你实际存储的文件可能为
teste.txt.txt而非teste.txt,请先在资源管理器顶部「查看」选项卡中勾选「文件扩展名」,核对文件完整名称 - 确认
c:\Java目录真实存在:按下Win+R输入c:\Java回车,验证目录可正常打开,且目录内确实存在对应名称的txt文件
- Windows默认隐藏已知文件扩展名,你实际存储的文件可能为
- 权限不足
右键点击c:\Java文件夹,选择「属性」-「安全」,确认当前运行Java程序的用户账号拥有该目录的「读取」权限 - 转义写法问题
你当前用双反斜杠\\做路径转义是正确的,也可以替换为Java原生支持的正斜杠写法c:/Java/teste.txt,避免转义错误
快速排查代码优化
你可以给getReader方法增加路径校验逻辑,直接打印JVM实际尝试读取的路径,快速定位不一致问题:
public static BufferedReader getReader(String name) { BufferedReader in = null; try { File file = new File(name); // 打印实际解析的文件路径,直接核对和预期是否一致 System.out.println("实际读取路径:" + file.getAbsolutePath()); // 前置校验文件状态 if (!file.exists()) { System.out.println("错误:文件不存在"); } else if (!file.isFile()) { System.out.println("错误:路径指向的不是普通文件"); } else if (!file.canRead()) { System.out.println("错误:当前用户无文件读取权限"); } in = new BufferedReader(new FileReader(file)); } catch (FileNotFoundException e) { // 打印完整异常栈信息,获取更详细报错原因 e.printStackTrace(); System.out.println("Arquivo não encontrado"); System.exit(0); } return in; }
内容的提问来源于stack exchange,提问作者RRF
相关产品推荐
相关产品推荐

