首先如果我们不把readLine()读取的行内容赋给一个字符串的话,每直接调用一次readLine()方法,实际上就是往下读一行。最后你会发现它变成了隔行读取。
错误代码:
FileInputStream fls = FileActivity.this.openFileInput(FILE_NAME);
if (fls == null){
Toast.makeText(this, "无信息", Toast.LENGTH_SHORT).show();
}
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fls));
String message = null;
while (bufferedReader.readLine() != null){
Log.d("FileActivity",bufferedReader.readLine());
}
bufferedReader.close();
正确写法:
FileInputStream fls = FileActivity.this.openFileInput(FILE_NAME);
if (fls == null){
Toast.makeText(this, "无信息", Toast.LENGTH_SHORT).show();
}
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fls));
String message = null;
while ((message = bufferedReader.readLine()) != null){
Log.d("FileActivity",message);
}
bufferedReader.close();
博客内容讨论了Java中使用BufferedReader读取文件时的一个常见错误,即连续调用readLine()导致的隔行读取问题。示例代码展示了错误的实现方式,即在while循环内部重复调用readLine(),这将导致每两行数据被打印一次。正确的做法是在while条件中一次性获取并使用readLine()的返回值,从而避免了数据丢失。修复后的代码正确地将读取的行内容存储到变量message中并在循环中使用。
2291

被折叠的 条评论
为什么被折叠?



