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

JDK源码研究之IO浅析

JDK 
阅读更多
典型的IO操作是以InputStream的read和OutputStream的wite(byte b)为标准,InputStream一次接收一个或多个字节,而OutputStream则一次写入一个或多个字节。
从JDK1.1开始又出现了以字符操作为标准的Reader和Write,Reader一次读取一个或多个字符,而Writer一次写入一个或多个字符。整个IO操作都是围绕这个主题展开的。
InputStream:
   ByteArrayInputStream
   FileInputStream
   ObjectInputStream
   PipedInputStream
   SequenceInputStream
   StringBufferInputStream,已过时,在旧版本中用以读取一个字节。已被Reader相应的子类代替
   FilterInputStream
     BufferedInputStream
     ......

OutputStream:
   ByteArrayOutputStream
   FilterOutputStream
     BufferedOutputStream
     ......
   FileOutputStream
   ObjectOutputStream
   PipedOutputStream

Reader:
   BufferedReader
   CharArrayReader
   InputStreamReader
   PipedReader
   StringReader

Writer:
   BufferedWriter
   CharArrayWriter
   OutputStreamWriter
   PipedWriter
   PrintWriter
   StringWriter
1、InputStreamReader 是字节流InputStream通向字符流的桥梁,通过包装InputStream便可以以Reader的方式读取字符。
2、OutputStreamWriter 是字符流OutputStream通向字节流的桥梁,通过包装OutputStream便可以以Writer的方式写入字符。
3、FileInputStream和FileOutputStream是两个比较特别的类,这两个类分别持有InputStream的OutputStream的引用,通过装饰者模式,可以很方便地添加一些额外的功能。
BufferedInputStream和BufferedOutputStream便是这两个类的子类,提供了buffer能力,减少与物理设备的交互。
4、Reader与Writer可没有Stream那么复杂,BufferedReader和BufferedWriter,分别直接继承自Reader和Writer类。
5、Reader与Writer是以平台默认的编码来读取或写入字符的,需要指定编码时则使用InputStreamReader和OutputstreamWriter。
6、正是由于使用了装饰者模式,才造就了今天写IO代码时一层层包装的”不美观“。这一层层的包装并不需要特别记忆,都有它的特点。
当你需要使用基于字节流的文件流时 new FileInputStream,外层加一个BufferedInputStream减少与磁盘的交互,则成了InputStream = new BufferedInputStream(new FileInputStream()); OutputStream也同理;
当你需要使用基于字符流的文件流时 new FileReader,同样需要加buffer,则成为new BufferedReader(new FileReader())。需要特别指定编码时,则成为 new BufferedReader(new InputStreamReader(new FileInputStream(path),encoding));
7、InputStream、OutputStream、Reader、Writer均为抽象类
8、ObjectInputStream和ObjectOutputStream分别用于基本类型的读写操作。
0
2
分享到:
评论
1 楼 mercyblitz 2010-06-29  
引用
Reader与Writer可没有Stream那么复杂


?都不复杂吧

相关推荐

    jdk源码 jdk源码

    Java Development Kit (JDK) 源码是学习和理解Java平台核心机制的关键资源。它包含了许多关键组件的源代码,使开发者能够深入探索Java语言的底层实现,从而提升编程技巧,优化性能,并理解标准库的工作原理。在这个...

    jdk源码(完整版)

    - **jdk**: 这是JDK的核心包,包含了诸如`java.lang`、`java.io`、`java.util`等基础类库,是所有Java程序的基础。 - **java**: 这个包下包含了许多Java语言的基本类,如`Object`、`String`、`Integer`等,以及I/O...

    自己重新编译的jdk源码jar包

    对于想了解JDK源码的朋友来说,通过调试JDK源码来学习是一个常用的方法。但是默认的情况下eclipse是不支持进入jdk源码中进行调试和显示当前变量的。 我们要明白在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样...

    jdk 源码 完整版

    这部分源码在现代Java开发中使用较少,但对于研究Java在特定平台上的行为和优化有一定帮助。 总的来说,这份"jdk源码 完整版"是开发者深入理解Java语言、提高编程水平的宝贵财富。通过研读源码,我们可以洞察Java的...

    jdk-8u60源码

    总的来说,深入研究JDK 8u60的源码不仅能够提升我们的Java编程技能,还能让我们掌握更多的底层知识,比如JVM的工作原理、类加载机制、新的语言特性实现等。对于任何希望提升技术水平的Java开发者来说,这都是一次...

    JDK源码阅读笔记

    JDK源码阅读笔记

    java JDK 源码

    通过研究Java JDK源码,开发者能够深入了解类库的设计模式、线程管理、内存分配、垃圾收集、异常处理等核心机制,从而提升编程技巧,编写出更高效、稳定和可维护的Java应用。同时,源码也是学习Java规范和最佳实践的...

    JDK源码阅读笔记LearningJDK

    JDK源码阅读笔记

    jdk源码-补充缺少sun包下的源码

    然而,对于理解和调试JDK内部机制,研究sun包下的源码是不可或缺的。 二、获取与补充sun包源码 补充缺失的sun包源码主要来源于OpenJDK项目,这是一个开源的JDK实现,其源码完全公开。OpenJDK的1.7分支包含了sun包...

    jdk1.8 源码中文版,jdk直接显示中文注释

    下载后直接去本机jdk目录里替换jdk中的src.zip 再打开idea就能看到中文版的源码注释 示例 https://blog.csdn.net/a7459/article/details/106495622

    jdk1.6 源码jdk1.6 源码

    通过研究JDK 1.6的源码,开发者不仅可以深化对Java语言的理解,还能提升在特定领域如并发、网络、I/O等方面的专业技能。同时,这也有助于适应不断发展的Java技术,因为许多基础原理在新版本中仍然适用。

    jdk6 源码 SRC

    jdk6 源码jdk6 源码jdk6 源码jdk6 源码jdk6 源码jdk6 源码

    JDK源码选读

    《JDK源码选读》是一本专注于Java开发人员深入理解JDK内核的重要参考资料。通过对JDK源码的解析,读者可以了解到Java语言的核心机制,提升编程技能和解决问题的能力。这里我们将围绕JDK源码中的关键知识点进行深入...

    JDK源码包(包含sun包下的源码)

    本压缩包提供的JDK源码包含了`sun`包,这意味着你可以研究诸如`sun.nio`(非阻塞I/O)、`sun.jdbc`(数据库连接)和`sun.security`(安全相关)等重要组件的实现细节。这些源码对于JDK的深度学习和性能优化有着极大...

    jdk源码包jdk-11.0.1

    这个源码包提供了对Java 11.0.1实现的深入理解,使得开发者可以查看和研究Java平台的核心源代码。 【描述】"jdk源码包"意味着这个压缩文件包含了Java开发工具集(JDK)的所有源代码。通过分析这些源码,开发者可以...

    java的jdk源码包

    第一步:安装完jdk之后,打开jdk所在目录,里面有个src.zip,这就是此jdk的所有源码 第二步:找到之后我们开始导入,选中项目点击右键,选中Build Path栏中的Configure Build Path,在Libraries中我们打开JRE ...

    JDK8完整源码包

    这份"JDK8完整源码包"包含了JavaFX、Sun私有实现等核心组件的源代码,为深入理解Java平台的工作原理提供了宝贵的资源。 首先,JavaFX是Java的图形用户界面(GUI)库,自JDK 8起成为标准部分,它提供了丰富的UI组件...

    JDK11源码 jdk-11.0.4 src源码

    通过深入研究JDK11源码,开发者不仅可以了解到Java语言的最新发展,还能掌握核心库的内部实现,这对于提升编程技能、解决实际问题具有极大的帮助。无论是对初学者还是经验丰富的开发者来说,都是不可多得的学习资源...

    深入浅出JDK源码

    通过深入研究JDK源码,开发者可以提升对Java语言的掌握程度,从而更好地优化代码、解决复杂问题。 本书可能涵盖了以下几个主要的知识点: 1. **Java虚拟机(JVM)**:JVM是Java程序的执行引擎,负责解释字节码并将...

    jdk源码jdk1.8.0_181

    《深入解析JDK1.8.0_181源码》 JDK(Java Development Kit)是Java编程语言的核心工具集,包含了编译器、运行时环境以及各种API。...对于任何Java开发者来说,深入研究这部分源码都是提升自身技能的重要途径。

Global site tag (gtag.js) - Google Analytics