`
taimukang
  • 浏览: 181169 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics