A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 逝....曾经 中级黑马   /  2015-6-21 18:17  /  615 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在一次读取文件的写法中,逐行
Java代码  

  • int c;  
  •             while((c = br.read()) != -1){  
  •               String s = br.readLine();  
  •               rtString.append ;  
  •            }  




在第一次执行的时候已经读了一个字符出来,然后光标就会后移一位
  接下来的循环中s=br.readLine();读到的就只是后续的字符串了,因此会少一个字符、
后来看到有人说修改为如下代码:
Java代码  

  • for(String   line   =   br.readLine();   line   !=   null;   line   =   br.readLine())   {     
  •     System.out.println(line);     
  • }     


结果发现最后一个字符又读取不到了
这个是不正确的,上面这段代码是可以读取最后一行字符的!

修改为:
Java代码  

  • String   instring;     
  •   
  •               while   (   (instring   =   br.readLine())   !=   null)   {     
  •                   if(instring   !=  null )     
  •                   {     
  •                         System.out.println(instring);     
  •                   }     
  •                   
  •               }     



这样每行都可以读取到了

或者用这样的写法:
         
Java代码  

  • while (br.ready()) {  
  •               myreadline = br.readLine();  
  •               rtString=rtString+myreadline;  
  •           }  


2 个回复

倒序浏览
没明白楼主写的前2个想表达什么。
第3个While循环里套的if跟while的判断重复了吧。
while已经判断为!=nulll了,为什么还要if判断次?
第4个ready倒是第一次见,如果可行的话倒是学到了。
回复 使用道具 举报
安安安 发表于 2015-6-21 20:41
没明白楼主写的前2个想表达什么。
第3个While循环里套的if跟while的判断重复了吧。
while已经判断为!=null ...

前两个是比较一下那两个方法的缺点与优点,第三个并没有重复,while是个条件成立就一直读取,if只读取一次,第四个你试试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马