Java读取txt文件提示找不到文件且无法打印内容怎么解决?
问题修复方案
核心故障原因
- 文件名重复拼接后缀:main方法中已经将用户输入的文件名拼接了
.txt后缀再传入Maze构造方法,而构造方法内部又重复拼接了一次.txt,最终实际查找的文件名为xxx.txt.txt,和你实际存储的文件名不符,因此触发文件找不到的报错。
修复方法
1. 修正文件名拼接逻辑
修改Maze类的字符串参数构造方法中的文件读取逻辑,删除重复拼接.txt的代码:
public Maze(String filename) { Scanner infile = null; try { // 删掉原来的 + ".txt",因为外层已经拼接过后缀 infile = new Scanner(new File(filename)); } catch(Exception e) { System.out.println("File not found"); return; } // 后续读取文件的原有逻辑保持不变 maze = new char[infile.nextInt()][infile.nextInt()]; for(int r = 0; r < maze.length; r++) { char[] line = infile.next().toCharArray(); for(int c = 0; c < maze[0].length; c++) { maze[r][c] = line[c]; if(maze[r][c] == START) { startRow = r; startCol = c; } } } }
2. 功能验证
你原有代码中的display()方法本身已经实现了将文件内容打印到控制台的功能,只要文件读取正常,调用该方法即可输出完整的迷宫内容。
额外注意事项
- 确保你的txt文件存放在项目运行的工作目录下(IDEA等IDE默认是项目根目录,和src文件夹同级;命令行运行的话是你执行java命令的当前目录)
- 输入文件名时不要额外加
.txt后缀,比如你的测试文件是maze1.txt,控制台输入maze1即可
内容的提问来源于stack exchange,提问作者StealthWar
相关产品推荐
相关产品推荐

