黑马程序员技术交流社区
标题:
求大神看一下,问什么输不出最后一行
[打印本页]
作者:
王东
时间:
2013-11-5 15:11
标题:
求大神看一下,问什么输不出最后一行
import java.io.*;
/*
模拟BufferedReader
readLine()的原理
*/
class MyBufferedReader
{
private FileReader fr;
MyBufferedReader(FileReader fr){
this.fr = fr;
}
//可以一次读一行数据的方法
public String myReadLine() throws IOException
{
//定义一个临时容器,原BufferedReader封装的是字符数组。
//为了演示方便,定义一个StringBuiler容器,因为最终还是将数组变成字符串。
StringBuilder sb = new StringBuilder();
int ch = 0;
while ((ch = fr.read()) != -1)
{
if(ch == '\r')
continue;
if(ch == '\n')
return sb.toString();
else
sb.append((char)ch);
}
return null;
}
public void myClose()throws IOException
{
fr.close();
}
}
class MyBufferedReaderTest
{
public static void main(String[] args) throws IOException
{
FileReader fr = new FileReader("buf.txt");
MyBufferedReader mybuf = new MyBufferedReader(fr);
String line = null;
while((line = mybuf.myReadLine()) != null ){
System.out.println(line);
}
mybuf.myClose();
}
}
复制代码
为什么不能输出文件的最后一行
作者:
青年黨衛軍
时间:
2013-11-5 15:47
你的程序中myReadLine()方法代码块中while内循环结束后,在return null;之前,还需要加上以下代码:
if(sb.length() != 0)
{
return sb.toString();
}
原因是:如果你的文件内容最后一行末尾没有回车符”\r\n“的话,最后一行默认没有结束,StringBuffer中的内容是无法打印出来的。
所以你需要判断最后一行是否有内容,如果StringBuffer中不为空的话,需要将内容打印出来。
作者:
王东
时间:
2013-11-5 18:33
青年黨衛軍 发表于 2013-11-5 15:47
你的程序中myReadLine()方法代码块中while内循环结束后,在return null;之前,还需要加上以下代码:
if(sb ...
恩恩,谢谢指导。谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2