通过判断readline是否为null来判断文件读取已经到达末尾不准确,平台间结果不一致...

[2013/4/11]发现了一个问题,如果仅仅通过判断BufferedReader的readline方法返回的是否为null,来间接判断文件读取是否到达末尾不太准确,原因是,如果在文件的末尾多打了两个回车以上(包括两个),那么程序就会报错,代码如下:

 

BufferedReader reader = new BufferedReader(new FileReader((new File("D:\\media\\workspace\\song.txt"))));
		String line;
		while ((line = reader.readLine()) != null) {
			addSong(line);
		}

 读取的文件如下:

 

never/jack
rainbow/wm
basdf/eef
amen/sdf
[此处为回车]
[此处为回车]
..
..

 通过调试发现,如果文件末尾存在两个以上的回车,那么readline()方法最后读取的是“”而不是null,解决方法是加入对空字符串的判断,代码如下:

 

BufferedReader reader = new BufferedReader(new FileReader((new File("D:\\media\\workspace\\song.txt"))));
		String line;
		while ((line = reader.readLine()) != null && line.length() > 0) {
			addSong(line);
		}

 欢迎拍砖。

 

 

 

[2013/4/12]今天无意中在linux环境下试了一下上边的代码,发现在linux上回车也算作文件的一部分,即最后一个回车算作文件的结尾,这可能是平台不一样导致的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值