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
分享到:
相关推荐
以下是对这些知识点的详细说明: 一、Java概述: Java是由Sun Microsystems开发的一种跨平台的编程语言,它具有“一次编写,到处运行”的特性,通过Java虚拟机(JVM)实现平台无关性。Java有丰富的类库支持,适用于...
【标题】"备忘录JAVA代码"涉及到的核心知识点主要集中在Java编程语言以及备忘录功能的实现上。Java是一种广泛使用的面向对象的编程语言,它以其"一次编写,到处运行"的特性闻名,具备强大的跨平台能力。在这个项目中...
知识点备忘 Java SE Thinking in Java [Java I/O](/Thinking-in-Java/Java IO.md) Android Android组件 Drawable 自定义Drawable View View工作过程 View事件分发机制 View滑动 自定义View User Interface ...
以下是对标题"JAVA核心面试知识整理"和描述的详细解读,以及与之相关的知识点。 1. **数据结构与算法**: - 数据结构:数组、链表、栈、队列、哈希表、树(二叉树、平衡树如AVL和红黑树)、图等。理解它们的时间...
通过以上知识点的学习,高级Java工程师不仅能够具备扎实的基础技能,还能够在面对复杂的软件开发任务时,更加从容不迫,有效地解决问题。此外,对于希望在Java领域进一步提升自己的开发者来说,这些知识也是不可或缺...
Java 和 Android 面试备忘单包含了这两个领域中最重要的知识点和常见面试问题。下面将对这些关键概念进行深入解析。 一、Java 基础 1. **数据类型**:Java 分为基本数据类型(如 int, char, boolean)和引用数据...
### Java面试宝典2018知识点概览 #### 1. Java基础 - **1.1 Collection和Map** - **知识点概述**: - 掌握`Collection`接口和`Map`接口的基本概念。 - 理解`List`、`Set`和`Map`之间的区别。 - `ArrayList`与`...
在Java面试中,掌握核心知识点是至关重要的,其中包括对JVM(Java虚拟机)的理解。JVM是Java程序运行的基础,它负责解析.class文件,执行字节码,并提供了内存管理、垃圾回收等机制。理解JVM的工作原理对于优化程序...
知识点: 1.Java 万年历项目概述 * 实现所有年份的公历日期的查询 * 在相应的日期做备忘录 * 显示当前的日期以及时间 * 使用 Oracle 数据库进行连接 2.Java 万年历核心功能 * 万年历查询:点击图形界面中的上年...
这份资料集涵盖了广泛的Java编程和相关技术的知识点,旨在帮助求职者准备Java开发岗位的面试,同时也适用于自我提升和复习巩固。下面,我们将深入探讨其中可能涉及的重要Java知识点。 1. **Java基础** - 数据类型...
以上只是部分可能出现在360 Java研发笔试题中的知识点,实际题目会根据职位需求和公司的具体技术栈有所调整。通过深入学习和实践这些内容,可以提高应对360Java研发笔试的能力,增加成功入职的可能性。
Java面试是技术人才求职过程中必不可少的一环,尤其对于Java开发者来说,掌握好核心知识点和面试技巧至关重要。"java面试题库.zip"这个压缩包很可能包含了众多经典的Java面试问题,帮助求职者准备各种面试场景。以下...
Java面试题资料包含了大量的Java程序员在面试过程中可能会遇到的问题,这些...这些知识点是Java开发者在面试中需要掌握的关键内容,通过深入理解和实践,可以提升解决问题的能力,为成功面试和职业发展打下坚实基础。
Java面试是每位Java开发者在职业发展道路上的重要环节,它涵盖了从基础到高级的众多知识点。这份"2020java面试资料大全.zip"压缩包显然为准备Java面试提供了丰富的资源。下面,我们将深入探讨其中可能涉及的主要Java...
接下来,我们将深入探讨Android开发、Java编程以及Apache的相关知识点。 1. **Android开发基础** Android是Google开发的开源移动操作系统,主要用于智能手机和平板电脑。开发Android应用主要使用Java或Kotlin语言...
以下是一些可能在模拟面试中遇到的Java相关知识点: 1. **基础概念**: - Java的历史与特性:了解Java由Sun Microsystems(现为Oracle)开发,其主要特性包括自动内存管理(垃圾回收)、平台独立性(Write Once, ...
在Java高级面试中,面试官通常会关注候选人在核心Java、多线程、集合框架、JVM内存管理、设计模式、数据库操作、...以上内容是Java高级面试中可能涉及的关键知识点,深入理解和掌握这些知识将有助于在面试中表现出色。
下面将详细讨论Java面试中常见的知识点。 一、Java基础知识 1. 类与对象:理解面向对象编程的基本概念,如封装、继承、多态,并能创建和使用类及对象。 2. 异常处理:掌握如何使用try-catch-finally语句块,以及...
这个过程涉及到多个关键知识点,包括UI设计、数据存储、事件监听和用户交互。以下是对这些知识点的详细解释: 1. **UI设计**: - **XML布局文件**:Android应用的用户界面主要通过XML布局文件来定义,如`activity_...
在"java web开发典型模块大全"中,我们看到提到了几个关键的模块或功能,包括Rss、备忘录、搜索引擎、聊天室和留言板。接下来,我们将详细探讨这些模块的实现和它们在Java Web开发中的重要性。 1. **Rss模块**:RSS...