Java如何读取文本文件行内容存入数组 解决BufferedReader空指针报错
错误原因与修复方案
核心报错原因
- 代码执行顺序错误:你在声明
BufferedReader reader = null后,还没完成reader的初始化赋值,就直接调用了reader.readLine()方法,此时reader还是空对象,所以触发空指针异常。 - 额外逻辑问题:原有循环内的读行逻辑混乱,每次循环多次无意义调用
readLine(),会导致数据跳行、赋值错乱。
具体修复步骤
- 先完成
BufferedReader的初始化,再调用读相关方法 - 调整循环逻辑,每轮循环依次读取名、姓各一行,避免重复读行导致数据丢失
- 增加数组下标边界判断,避免文件行数超过数组长度时触发越界异常
- 补充文件流关闭逻辑,避免资源泄漏
修复后的完整代码
import java.io.*; public class Test { static String [] name = new String [3]; static String [] surname = new String [3]; public static void main(String[] args) { BufferedReader reader = null; try{ // 先初始化reader再调用读方法 reader = new BufferedReader(new FileReader("Names.txt")); String currentLine; int x=0; // 读行同时判断是否为空,同时限制不超过数组长度 while((currentLine = reader.readLine()) != null && x < name.length){ // 第一行存为名 name[x] = currentLine; // 第二行存为姓 surname[x] = reader.readLine(); x++; } } catch(Exception e){ System.out.println("The following error occured:" + e.getMessage()); } finally { // 关闭文件流释放资源 try { if(reader != null) reader.close(); } catch (IOException e) { e.printStackTrace(); } } for(int x =0; x<name.length; x++){ System.out.println( "name:" + name[x] + "\n"+ "surname: " + surname[x] +"\n" ); } } }
使用注意
请确保你的Names.txt文件和程序运行路径一致,文件内容每两行为一组,第一行是名、第二行是姓,最多存储3组数据。
内容的提问来源于stack exchange,提问作者Kristie
相关产品推荐
相关产品推荐

