几种常用Reader输入流的使用方式

上次聊到了 java 的字节流 inputstream,今天来看看它的好朋友 reader 字符流。
readerjava 中的 io 输入流不是只有 inputstream 还有按字符输入的 reader。
inputstreamreader
字节流,以 byte 为单位 字符流,以 char 为单位
读取字节(-1,0~255):int read() 读取字符(-1,0~65535):int read()
读到字节数组:int read(byte[] b) 读到字符数组:int read(char[] c)
和 inputstream 一样,reader 也是所有字符输入流的超类。主要的方法是:public int read() throws ioexception,read() 读取字符流中的下一个字符,返回 0-65535 的 int 类型数值, 返回 -1 表示已经读取结束。
filereaderfilereader 打开一个文件并获取到文件的字符流。filereader 用于读取文件中的内容。
private void filereaderdemo() throws exception { reader reader = new filereader(d:eaderdemo.txt); int n; while ((n = reader.read()) != -1) { system.out.print((char)n); } reader.close();}reader 实现了 closeable 接口,可以用 try(reader reader = new filereader(d: eaderdemo.txt)) {} 的方式关闭掉资源。
inputstreamreaderinputstreamreader 就是将 inputstream 读取的字节流装换为 reader 的字符流。可以把任意的 inputstream 转换为 reader,filereader 就继承自 inputstreamreader。在创建 inputstreamreader 实例对象的时候可以指定字符集,以防止乱码。
private void inputstreamreaderdemo() throws exception { inputstream inputstream = new fileinputstream(d:eaderdemo.txt); try(reader reader = new inputstreamreader(inputstream, utf-8)) { int n; while ((n = reader.read()) != -1) { system.out.print((char)n); } }}stringreader 和 chararrayreaderfilereader 是将文件作为一个读取源,stringreader 将 string 字符串作为一个读取源。
private void stringreaderdemo() throws exception { try(reader reader = new stringreader(这是测试代码)) { char[] buffer = new char[1024]; while ((reader.read(buffer)) != -1) { system.out.print(buffer); } }}reader.read(char[] buffer) 是 reader 读取字符流的重载方法,将内容不在是一个 char 一个 char 的输出,而是将内容读取到缓冲区 buffer 后一次性输出。
chararrayreader 和 stringreader 几乎一样,调用方法变成了 try(reader reader = new chararrayreader(这是测试代码.tochararray()))
bufferedreader提供通用的缓冲方式读取文本并且提供了 readline() 读取了一个文本行。从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
private void bufferedreaderdemo() throws exception { try(bufferedreader reader = new bufferedreader(new filereader(d:eaderdemo.txt))) { string line; while ((line = reader.readline()) != null) { system.out.println(line); } }}总结介绍了几种常用 reader 输入流的使用方式。filereader 用于文件读取,bufferedreader 自带缓冲区读取效率高,stringreader 和 chararrayreader 可以读取字符串源,inputstreamreader 将 inputstream 转为 reader。

西门子全交流变频驱动系统在电厂卸船机上应用及其速度同步与电流
盘点2019年五大未来技术趋势
一文详解外凸与内凸法规
荣耀V9好在哪里?有什么亮点?值不值得买?
西门子plc的crc校验程序
几种常用Reader输入流的使用方式
南方电网海南公司启动电网提升三年行动计划 加速推进海南电网“脱胎换骨”
2018电视机顶盒十大品牌,揭秘最值得入手的十大电视盒子
疫情之下医疗物资不够用,3D打印技术来帮忙
纸张表面瑕疵检测仪的详细介绍
TLE9879汽车三相马达驱动解决方案
GSA数据显示:全球80家运营商部署符合3GPP标准的5G技术
新型室内分布系统WFDS应用与分析
MIMO天线增益不同引起的吞吐量波动
如何在IC封装中分析并解决与具体引线键合相关的设计问题?
2018年全球智能手机市场总结及2019年趋势展望 – 五大特点
卖爆了!检测设备上的传感器严重短缺
中国引力波探测首次得到五个激光反射器的信号
采购一体成型电感你所要知道的五大要点
了解功率监视器的精度规格对于测量的重要性