关于BufferedReader的read()和readLine()的区别

 更新时间:2021年12月09日 10:45:56   作者:更好的自己520  
这篇文章主要介绍了关于BufferedReader的read()和readLine()的区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

BufferedReader的read()和readLine()区别

从一个有若干行deep文件中依次读取各行,处理后输出,如果用以下方法,则会出现除第一行外首字符丢失的现象

String str  = null;
br=new BufferedReader(new FileReader(fileName));
do{
str = buf.readLine()); 
}while(br.read()!=-1);

以下用法会使每行都少首字符

while(br.read() != -1){
str = br.readLine();
}

原因在于br.read()!=-1这判断条件上,因为在执行这个条件的时候它已经读取了一个字符,然而在这里并没有对读取出来的这个字符做处理,所以会出现少一个字符,如果你这里写的是while(br.readLine()!=null)会出现隔一行少一行。

建议使用一下方法

String str = null;
while((str = br.readLine()) != null){
//System.out.println(str);//此时str就保存了一行字符串
}

这样应该就可以无字符丢失地得到一行了

小结一下

使用readLine()一定要注意

1:读入的数据要注意有/r,/n或/r/n

2:没有数据时会阻塞,在数据流异常或断开时才会返回null

3:使用socket之类的数据流时,要避免使用readLine(),以免为了等待一个换行/回车而一直堵塞

项目经验

1.读取一个txt文件,方法很多种我使用了字符流来读取(为了方便)

   FileReader fr = new FileReader("f:\\TestJava.Java");
   BufferedReader bf = new BufferedReader(fr);
   //这里进行读取
   int b;
   while((b=bf.read())!=-1){
    System.out.println(bf.readLine());
   }

发现每行的第一个字符都没有显示出来,原因呢:b=bf.read())!=-1 每次都会先读取一个字节出来,所以后面的bf.readLine());读取的就是每行少一个字节。所以,应该使用

String valueString = null;
   while ((valueString=bf.readLine())!=null){    
    System.out.println(valueString);
   }

BufferedReader.readLine()总结

BufferedReader.readLine()

最近写了段用于获取执行命令的返回值的代码,如下:

while(br.readLine()!null) 
{ 
    msg=br.readLine(); 
}

然后显示的结果却是隔行输出的。想了下, 应该是每调用一次read()或者readLine(),指针都会移动的。所以得到的是隔行输出。

正确的代码如下

BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
    String msg = null;
while((msg = br.readLine())!= null)
 { 
System.out.println(msg); 
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Java中的封装、继承、多态

    详解Java中的封装、继承、多态

    本文主要介绍了Java中的封装、继承、多态的相关知识,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Java几种常用JSON库性能比较详解

    Java几种常用JSON库性能比较详解

    这篇文章主要介绍了Java几种常用JSON库性能比较详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • 利用java实现二叉搜索树

    利用java实现二叉搜索树

    这篇文章主要介绍了利用java实现二叉搜索树,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • java的JIT 工作原理简单介绍

    java的JIT 工作原理简单介绍

    这篇文章主要介绍了java的JIT 工作原理简单介绍的相关资料,需要的朋友可以参考下
    2017-03-03
  • IDEA配置tomcat服务器全过程

    IDEA配置tomcat服务器全过程

    这篇文章主要介绍了IDEA配置tomcat服务器全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Spring自动装配与扫描注解代码详解

    Spring自动装配与扫描注解代码详解

    这篇文章主要介绍了Spring自动装配与扫描注解代码详解,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • spring多数据源配置实现方法实例分析

    spring多数据源配置实现方法实例分析

    这篇文章主要介绍了spring多数据源配置实现方法,结合实例形式分析了spring多数据源配置相关操作技巧与使用注意事项,需要的朋友可以参考下
    2019-12-12
  • Java并发编程之Exchanger方法详解

    Java并发编程之Exchanger方法详解

    这篇文章主要介绍了Java并发编程之Exchanger方法详解,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Java职责链模式的深入了解

    Java职责链模式的深入了解

    这篇文章主要为大家介绍了Java职责链模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • java高并发的线程中断的几种方式详解

    java高并发的线程中断的几种方式详解

    这篇文章主要介绍了Java线程中断机制几种方法及示例,向大家分享了这几种方法的介绍几代码示例,具有一定参考价值,需要的朋友可以了解下。
    2021-10-10

最新评论