Java IO 知识点备忘

1. java io 库采用Decorator设计模式

2. java io库中包括两种对象:处理字节序列的类(InputStream和OutputStream,读写操基于单字节)和处理Unicode字符的类(Reader和Writer,读写操作是基于双字节的 Unicode代码单元)。

3.类结构
InputStream(抽象类)
|--ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节
|--FileInputStream 从文件系统中的某个文件中获得输入字节
|--ObjectInputStream 对基本数据和对象进行反序列化
|--PipedInputStream 实现了pipe的概念,主要在线程中使用
|--SequenceInputStream 把多个InputStream合并为一个InputStream
|--StringBufferInputStream 将字符串读入输入流
|--FilterInputStream 过滤输入流的超类
|--BufferedInputStream 为另一个输入流添加缓冲输入以及支持 mark 和 reset 方法的能力
|--DataInputStream 数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型
|--PushbackInputSteam 为另一个输入流添加性能,即“推回 (push back)”或“取消读取 (unread)”一个字节的能力

OutputStream(抽象类)
|--ByteArrayOutputStream 此类实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长
|--FileOutputStream 将数据写入 File 或 FileDescriptor
|--ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream
|--PipedOutputStream可以将管道输出流连接到管道输入流来创建通信管道
|--FilterOutputStream 过滤输出流的所有类的超类
|--BufferedOutputStream实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统
|--DataOutputStream 允许应用程序以适当方式将基本 Java 数据类型写入输出流中
|--PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式


Reader(抽象类)
|--BufferedReader
|--CharArrayReader 与 ByteArrayInputStream对应
|--PipedReader 与PipedInputStream对应
|--StringReader 与StringBufferInputStream对应
|--InputStreamReader
|--FileReader 与FileInputStream对应
|--FilterReader
|--PushbackReader

Writer(抽象类)
|--BufferedWriter
|--CharArrayWriter
|--PipedWriter
|--PrintWriter
|--StringWriter
|--OutputStreamWriter
|--FileWriter
|--FilterWriter


4.三种IO性能比较:
在读写一个10k文件的时候,三种方式的耗时如下:
InputStreamReader And OutputStreamWriter : 63ms (可以设置文件的编码,如果不用buffer)
BufferedReader And BufferedWriter : 31ms
BufferedInputStream And BufferedOutputStream : 16ms


参考:http://zhoujingxian.iteye.com/blog/440806
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值