Java IO操作——BufferedReader(缓冲区读取内容,避免中文乱码)

要点:

掌握BufferedReader类的使用

掌握键盘输入的基本形式

Buffer:表示缓冲区的。之前的StringBuffer,缓冲区中的内容可以更改,可以提高效率。

如果想接收任意长度的数据,而且避免乱码的产生,就可以使用BufferedReader。

public class BufferedReader extends Reader

因为输入的数据有可能出现中文,所以此处使用字符流完成

BufferedReader是从缓冲区之中读取内容,所有的输入的字节数据都将放在缓冲区之中。

1、public BufferedReader(Reader in) 构造方法 接收一个Reader类的实例

2、public String readLine() throws IOException 一次性从缓冲区中将内容全部读取进来。

System.in本身表示的是InputStream(字节流),现在要求接收的是一个字符流,需要将字节流转为字符流才可以,InputStreamReader。

BufferedReader接收键盘输入时实例化如下:

此时就可以给出键盘输入数据的标准格式。

import java.io.* ;
public class BufferedReaderDemo01{public static void main(String args[]){BufferedReader buf = null ;       // 声明对象buf = new BufferedReader(new InputStreamReader(System.in)) ;    // 将字节流变为字符流String str = null ;    // 接收输入内容System.out.print("请输入内容:") ;try{str = buf.readLine() ;   // 读取一行数据}catch(IOException e){e.printStackTrace() ;    // 输出信息}System.out.println("输入的内容为:" + str) ;}
};


此时,没有任何长度限制,可以输入很多的内容,每次都以回车结束。

不仅可以接收键盘输入,还可以将文件中的内容读取到缓冲区之中 然后调用readLine()方法将缓冲区中的全部内容转为字符串。实例如下:

在d盘根目录下有一个test.txt文件内容如下:

代码读取如下:

import java.io.* ;
public class BufferedReaderDemo01{public static void main(String args[]){BufferedReader buf = null ;       // 声明对象buf = new BufferedReader(new InputStreamReader(System.in)) ;    // 将字节流变为字符流String str = null ;    // 接收输入内容System.out.print("请输入内容:") ;try{str = buf.readLine() ;   // 读取一行数据}catch(IOException e){e.printStackTrace() ;    // 输出信息}System.out.println("输入的内容为:" + str) ;}
};


需要注意的是,如果从文件中读取的话readLine一次只能读取一行的数据。

编辑test.txt 如下所示:

import java.io.* ;
public class BufferedReaderDemo01{public static void main(String args[])throws IOException{BufferedReader buf = null ;     // 声明对象buf = new BufferedReader(new FileReader(new File("D:"+File.separator+"test.txt"))) ;  // 将字节流变为字符流String str1 = null ;   // 接收输入内容String str2 = null ;  // 接收输入内容try{str1 = buf.readLine() ;   // 读取一行数据str2 = buf.readLine() ;   // 读取一行数据}catch(IOException e){e.printStackTrace() ;    // 输出信息}System.out.println("读取第一行的内容为:" + str1) ;System.out.println("读取第二行的内容为:" + str2) ;}
};


可以发现:从文件中使用readLine()方法读取行内容时,会自动接着上次在流中的位置进行读取。

如果要全部读取文件的中的内容有如下两种方法:

方法一:使用StringBuffer类不停的连接readLine()从每次读取的一行内容,直至读取的为null为止。然后进行输出。

方法二:使用StringBuffer类不停的连接read()方法读取到的每一个数字转化后的字符。然后进行输出。

再次不在赘述。

Java IO之:BufferedReader(超详细解析,使用方法说明)相关推荐

  1. Java 泛型详解(超详细的java泛型方法解析)

    Java 泛型详解(超详细的java泛型方法解析) 1. 什么是泛型 泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型.也就是说在泛型使用过程中,操作的数据类型被指定为 ...

  2. Android技能树 — 网络小结(6)之 OkHttp超超超超超超超详细解析

    前言: 本文也做了一次标题党,哈哈,其实写的还是很水,各位原谅我O(∩_∩)O. 介于自己的网络方面知识烂的一塌糊涂,所以准备写相关网络的文章,但是考虑全部写在一篇太长了,所以分开写,希望大家能仔细看 ...

  3. 靠java_基础不牢靠,何以争朝夕?Java基础面试82道详细解析!(一)

    基础不牢靠,何以争朝夕?Java基础面试82道详细解析!(一) 发布时间:2020-03-31 12:08:31 来源:51CTO 阅读:229 作者:wx5d9ed7c8443c3 题目的基本顺序是 ...

  4. 单片机数字钟(调时,调时闪烁,万年历,年月日)超详细解析

    2019/07/13 单片机数字钟(调时,调时闪烁,万年历,年月日)超详细解析 发表日期:2019/07/13 单片机开发板:巫妖王2.0, 使用同款开发板可直接上板测试 文档说明: 实现功能 : 一 ...

  5. Java并发编程Future超详细教程

    非原创,自己保存学习用,传播请参考原文. 原文链接:Java并发编程Future超详细教程 前言 创建线程有几种方式?这个问题的答案应该是可以脱口而出的吧 继承 Thread 类实现 Runnable ...

  6. 计算机网络之交换机的工作原理---超详细解析,谁都看得懂!!

    在了解交换机的工作原理之前,我们先要了解几个概念. 一.相关概念  1.OSI七层模型是哪七层? 自上而下分别是: 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 交换机工作在数据链路层, ...

  7. 深入理解Java虚拟机(第3版)学习笔记——JAVA内存区域(超详细)

    深入理解Java虚拟机(第3版)学习笔记--JAVA内存区域(超详细) 运行时数据区域 程序计数器 java虚拟机栈 本地方法栈 java堆 方法区 运行时常量池 直接内存 对象的创建 对象的内存布局 ...

  8. 【Java】IO流 (超详细!!)

    Java IO流 Java IO流 IO 流的分类 按照流的方向 输入流 输出流 按照数据单位的不同 字节流 字符流 根据功能不同 节点流 处理流 IO 流的架构 四个基本抽象类 InputStrea ...

  9. Java SE加强篇——超详细,Java入门,这一篇就够了

    建议先阅读 JavaSE基础篇 第一天:面向对象进阶一 一.static静态 关键字 1.static是什么? static是静态的意思,可以修饰成员变量和成员方法 static修饰成员变量表示该成员 ...

最新文章

  1. POJ 2480 (约数+欧拉函数)
  2. JavaScript快速入门(六)——DOM
  3. python爬虫正则表达式实例-3.Python爬虫入门_正则表达式(简单例子)
  4. VC++把输入的字符转换为十六进制
  5. python -使用del语句删除对象引用
  6. CyclicBarrier:人齐了,老司机就发车了!
  7. 连通图遍历策略之广度优先搜索(C语言)
  8. Go 标准库: io
  9. 编码与解码 字符串中的
  10. 2021年高考成绩查询衡阳市八中,优秀!衡阳2020年各大高中成绩出炉!
  11. javascript算法汇总(持续更新中)
  12. 基于LD3320的非特定人语音识别方案
  13. 如何将PDF文档转换成JPG格式
  14. 如何在PPT中插入HTML页面|如何使用控件将Pyecharts图表插入PPT|ActiveX
  15. win7默认网关不可用_win7 默认网关不可用
  16. CNN(卷积神经网络)的深度
  17. 区块链 + 供应链金融(1)
  18. 微信小程序更改checkbox和radio样式
  19. matlab相关,来自一个初学者的收藏
  20. 上海邮政EMS海关清关(个人) 流程

热门文章

  1. 第7章 网络层协议(3)_ARP协议
  2. 太赫兹技术将颠覆公共场所安检方式
  3. SpringBoot菜鸟教程(一)
  4. shell脚本应用——正则表达式
  5. S32DS使用Jlink下载S32K144程序记录
  6. 如何在双系统下删除linux系统
  7. 使用Mbrfix卸载Ubuntu系统
  8. 基于内容的电影推荐:物品画像和用户画像
  9. 地摊如何吸引人?配音神器为您解决烦恼
  10. 简书APP连个验证短信都发不了?