Java之IO(十)Reader和Writer
转载请注明源出处:http://www.cnblogs.com/lighten/p/7071733.html
1.前言
之前的章节已经将Java8的io包中的字节流介绍完毕了。本章开始介绍Java的IO中另一个重要的体系,字符流。字节是给计算机看的,字符才是人能够认识的,可想而知字符流的重要性。字符流体系的根源在于抽象父类Reader和Writer。一切都起源于这两个类。
2.Reader
Reader实现了Readable和Closeable接口,这两个接口从JDK1.5开始出现。Reader的结构其实和InputStream很像,如下:
稍有不同的地方就是:lock对象锁和read(CharBuffer)这个Readable接口需要实现的方法,ready()对比于InputStream中的available()了。lock是一个Object对象,其作用是用于流中的同步操作,为了高效通常使用其它的对象,而不是流对象本身(this。同步锁使用this对象效率会差?Get一个新的知识点了)。Reader与InputStream最大的不同就在于Reader需要子类实现的方法是read(char[], int, int),InputStream是read()。这也很好理解,因为Reader字符流更关注的是字符,可以是多个字节,InputStream关注的是字节,所以是需要实现read()方法。

通过read(char[], int, int)方法,读取一个字符数组,存入所给的CharBuffer中。

read()也是借助了read(char[],int, int)方法。

maxSkipBufferSize默认是8192,所以一次最多跳过这么多个字符。其它的放啊就是不支持重置,close方法要自己处理了。
3.Writer
Writer的差异与OutputStream就大不相同了,结构如下:

其需要实现的方法就是write(char[],int,int),flush()和close()方法。append方法都来自于其实现的Appendable接口。默认的WRITE_BUFFER_SIZE是1024个。


实现都比较简单,看一下就能看明白的,这里不做详细描述。上面的结构也能看出其针对的就是字符流了。写都是字符或字符串。append方法其实也是调用了这些方法。
Java之IO(十)Reader和Writer的更多相关文章
- Java之IO(十四)IO包中其它类
转载请注明出处:http://www.cnblogs.com/lighten/p/7267553.html 1.前言 此章介绍IO包中剩余未介绍的几个流和工具类,包括LineNumberReader. ...
- Java之IO(十二)CharArrayReader和CharArrayWriter
转载请注明源出处:http://www.cnblogs.com/lighten/p/7082668.html 1.前言 本章介绍字符数组流,作用和ByteArrayInputStream字节数组流相同 ...
- Java之IO(零)总结
转载请注明原出处:http://www.cnblogs.com/lighten/p/7274378.html 1.前言 本章是对之前所讲述的整个Java的IO包的一个总结,抽出个人认为比较重要的知识点 ...
- Java IO: Reader And Writer
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Java IO的Reader和Writer除了基于字符之外,其他方面都与InputStre ...
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
接上一篇的字节流,以下主要介绍字符流.字符流和字节流的差别以及文件复制拷贝.在程序中一个字符等于两个字节.而一个汉字占俩个字节(一般有限面试会问:一个char是否能存下一个汉字,答案当然是能了,一个c ...
- Java IO: Reader和Writer
作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) Reader 原文链接 Reader是Java IO中所有Reader的基类.Reader与Input ...
- Java I/O(三)各种Reader和Writer读写器、RandomAccessFile随机访问文件、序列化
2019 01/01 八.Reader和Writer读写器 前面讲的输入输出流的基本单位都是字节,因此可以称为“字节流”,读写器是以字符为基本单位,可以称为“字符流”.它们的使用方法非常相似,因此我考 ...
- 十八、Java基础--------IO流体系以及字符流
在上一章节中详细介绍集合框架的相关知识,在接下来的几篇文章中将讲述Java中另一个及其重要的知识——IO流,本文主要是讲述IO流的一些基本概念以及字符流的相关应用. IO流 介绍IO流之前先介绍一下什 ...
- Java IO (3) - Reader
Java IO (3) - Reader 前言 JavaIO一共包括两种,一种是stream,一种是reader/writer,每种又包括in/out,所以一共是四种包.Java 流在处理上分为字符流 ...
随机推荐
- 29. What Makes a True Leader ? 合格的领导者由何物决定 ?
29. What Makes a True Leader ? 合格的领导者由何物决定 ? ① Reading leadership literature,you'd sometimes think t ...
- 浅谈OCR之Tesseract
光 学字符识别(OCR,Optical Character Recognition)是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程.OCR技术非常专业,一般多是印刷.打印 ...
- sql join用法(转)
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...
- yum基本操作(转)
原文地址:http://www.cnblogs.com/chuncn/archive/2010/10/17/1853915.html yum(全称为 Yellow dog Updater, Modif ...
- java.lang.ExceptionInInitializerError Caused by: org.hibernate.InvalidMappingException: Unable to read XML
此错误是说无法读取你的xml文档,于是我们就该去更改xml文档,因为我是自动生成的,所以我找了一份之前手写的,发现是dtd错了,把之前的dtd拷贝过来之后程序就测试通过了
- (最小生成树 )还是畅通工程 -- HDU--1233
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1233 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- Codeforces735A Ostap and Grasshopper 2016-12-13 11:53 78人阅读 评论(0) 收藏
A. Ostap and Grasshopper time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- Django:form.save()方法
参考:https://blog.csdn.net/it_yuan/article/details/53580756 背景: 之前的博客是不支持上传文章缩略图的,后来新增了此功能,但是发现修改老的文章时 ...
- 实例化MD5CryptoServiceProvider报错:此实现不是 Windows 平台 FIPS 验证的加密算法的一部分
System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS valid ...
- NetCore偶尔有用篇:NetCore项目发布为Nuget包
一.简介 1.nuget大家已经不陌生. 2.netcore默认引用便是nuget,并处理了嵌套关系. 3.netcore已经支持直接编译生成nuget包. 4.本文介绍如何把自己建立的项目发布为nu ...