Java I/O总结——Reader
来源:互联网 发布:独立游戏开发入门 知乎 编辑:程序博客网 时间:2024/05/20 23:03
InputSteream和OutpurStream是针对基于字节(byte)输入输出设计的,实际应用中常常需要读写的是基于字符(char ,Unicode 2个字节)的,java.io.Reader和java.io.Writer就是所有读写字符数据流的父类。
Reader提供的方法和InputStream提供的几乎是一样的,不同之处在于Reader的操作多数是char类型的。
对上图(从下往上看)总结说明如下:
- Reader类中定义了成员变量lock,顾名思义,lock的用途是解决实现对流操作的同步问题。Reader的子类可以使用这个成员变量来实现流操作的同步操作。
- F ilterReader也是采用了Decorator(装饰)模式,与我们在前面学习InputStream、OutputStream相比较,如下图所示:前面的BufferedInputStream、BufferedOutputStream都是采用了Decorator(装饰)模式,而这里的BufferedReader是直接从Reader继承下来了,而不是从F ilterReader继承的,不符合Decorator(装饰)模式据说这个JAVA SDK中的一个BUG,但是好像一直也没有修改,估计对使用没有大的影响吧。此外BufferedReader还提供了一个String readLine()函数,方便我们从文件中读取一行数据,这个函数也是比较有用的。
- InputStreamReader就像是一个桥:把字节流(byte)转换为字符流(char),它读取字节流,并使用指定的字符集(charset)将这些字节流转换为字符。常见的字符集有:GBK、ISO-8859-1、UTF-8,Java的字符流本身采用的就是Unicode,关于字符集的详细说明请看文档。给大家举个具体的例子,如下:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String strLine;
while(strLine=in.readline()!=null)
{
if(strLine.contain("分隔符")){
System.out.println(strLine)
}
}
in.close();
具体的含义就是:将标准输入流转换为字符流,并缓存到BufferedReader的缓冲区中,并将缓冲区中的数据显示在标准输出设备上。
- StringReader、CharArrayReader使用起来都非常简单;
总结说明
Reader子类中较常用的还是:BufferedInputStream、InputStreamReader,BufferedInputStream为我们提供了数据缓存机制,对于读取大块的数据比较方便,尤其是在读取文件的时候;InputStreamReader作为流的转换,转换后的字符流是什么编码,与虚拟机默认的字符集有关,关于字符集部分大家还需要去深入学习。
- Java I/O总结——Reader
- Java I/O总结——Reader
- Java I/O总结——Reader
- Java I/O流-总结(InputStream,OutputStream,Reader,Writer)
- Java I/O流-总结(InputStream,OutputStream,Reader,Writer)
- Java I/O流-总结(InputStream,OutputStream,Reader,Writer)
- Java I/O Reader and Writer
- Java I/O系统之Reader
- Java I/O系统之Reader
- Java I/O总结——InputStream
- Java I/O总结——InputStream
- Java I/O总结——OutputStream
- Java I/O总结——Writer
- Java I/O总结——Writer
- Java I/O总结——InputStream
- Java I/O总结——OutputStream
- Java I/O总结——InputStream
- Java I/O总结——InputStream
- CSS filter滤镜的用法
- 发现并防止托管代码中出现内存泄漏,C# 内存泄漏,.net 内存泄漏
- Android adb shell 命令详解
- 国家气象局提供的天气预报接口(完整Json接口)
- DLL中GDIPlus初始化和退出时注意的问题
- Java I/O总结——Reader
- (译)在cocos2d里面如何使用Texture Packer和像素格式来优化spritesheet
- Delphi IniFile 应用详解
- 删除windows server 2003群集服务
- 深入剖析GCC函数调用堆栈变化过程
- MFC 中的多线程(Work线程)(转)
- facebox中div使用方法
- 数学符号大全
- Servlet/JSP配置详解