【发布时间】:2017-08-12 11:41:54
【问题描述】:
基本上我有一个从 .txt 文件中读取多行的作业。 文本文件中每行有 4 个值,每个值用 2 个空格分隔。 文件大约有10行数据。
在从文件中获取输入后,程序会将其放入数据库中。数据库连接功能工作正常。
我现在的问题是使用 BufferedReader 从文件中读取。 问题是,如果我取消注释底部 3 行中的任何 1 行,BufferedReader 每隔一行读取一次。如果我不使用它们,则会出现异常,因为下一个输入是字符串类型。 我曾考虑使用带有 .hasNextLine() 方法的扫描仪。
对可能是什么问题以及如何解决问题有任何想法吗? 谢谢。
File file = new File(FILE_INPUT_NAME);
FileReader fr = new FileReader(file);
BufferedReader readFile = new BufferedReader(fr);
String line = null;
while ((line = readFile.readLine()) != null) {
String[] split = line.split(" ", 4);
String id = split[0];
nameFromFile = split[1];
String year = split[2];
String mark = split[3];
idFromFile = Integer.parseInt(id);
yearOfStudyFromFile = Integer.parseInt(year);
markFromFile = Integer.parseInt(mark);
//line = readFile.readLine();
//readFile.readLine();
//System.out.println(readFile.readLine());
}
编辑:.txt 文件的格式存在错误。一个缺失值。 但现在我得到了一个 ArrayOutOfBoundsException。
编辑编辑:.txt 文件中的另一个错误!原来有一个空间而不是双。它现在似乎正在工作。但是对于以后如何处理此类文件错误有什么建议吗?
【问题讨论】:
-
在您的 while 循环中,您一次将一行读入变量
line,然后将split转换为id、namefromFile、year和@987654327 @ - 你为什么要在循环中进一步阅读line- 这是重复的 -
请提供有关您发布的代码的方法的更多详细信息。它会抛出
IOException吗?您从 .txt 文件中读取什么样的数据?它们是每行 4 个标记(字符串或数字)吗? 3 条注释掉的行很可能应该被注释掉。 :-) -
@JacobO 使用您当前遇到的完整错误更新您的答案。
-
开始将
String[] split = line.split(" ", 4);更改为String[] split = line.split(" "); -
您可能试图读取底部的空行。您应该将 BufferedReader 放在 Try and Catch 块上。你也可以去掉最后一行。
标签: java bufferedreader java-io