IO体系分Input/Output和Reader/Writer两类,区别在于Reader/Writer在读写文本时能自动转换内码
根接口是InputStream/OutputStream
数据源的IO类有FileInputStream/FileOutputStream,ByteArrayInputStream/ByteArrayOutputStream等
充当装饰功能的IO类有BufferedInputStream/BufferedOutputStream,DataInputStream/DataOutputStream等
InputStream
|
ByteArrayInputStream
|
把内存中的一个缓冲区作为InputStream使用
|
|
StringBufferInputStream
|
把一个String对象作为InputStream
注释:不推荐使用
StringBufferInputStream 方法。 此类不能将字符正确的转换为字节。
同 JDK 1.1 版中的类似,从一个串创建一个流的最佳方法是采用 StringReader 类。
|
|
FileInputStream
|
把一个文件作为InputStream,实现对文件的读取操作
|
|
PipedInputStream
|
实现了pipe的概念,主要在线程中使用. 管道输入流是指一个通讯管道的接收端。一个线程通过管道输出流发送数据,而另一个线程通过管道输入流读取数据,这样可实现两个线程间的通讯。
|
|
SequenceInputStream
|
把多个InputStream合并为一个InputStream .“序列输入流”类允许应用程序把几个输入流连续地合并起来,并且使它们像单个输入流一样出现。每个输入流依次被读取,直到到达该流的末尾。然后“序列输入流”类关闭这个流并自动地切换到下一个输入流。
|
Reader
|
CharArrayReader
|
与ByteArrayInputStream对应
|
|
StringReader
|
与StringBufferInputStream对应
|
|
FileReader
|
与FileInputStream对应
|
|
PipedReader
|
与PipedInputStream对应
|
|
|
|
Java
IO的一般使用原则:
一、按数据来源(去向)分类:
1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter
2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream
3、是Char[]: CharArrayReader, CharArrayWriter
4、是String: StringBufferInputStream, StringReader, StringWriter
5、网络数据流:InputStream, OutputStream, Reader, Writer
二、按是否格式化输出分:
1、要格式化输出:PrintStream, PrintWriter
三、按是否要缓冲分:
1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader,
BufferedWriter
四、按数据格式分:
1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream结束的子类
2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类
五、按输入输出分:
1、输入:Reader, InputStream类型的子类
2、输出:Writer, OutputStream类型的子类
六、特殊需要:
1、从Stream到Reader,Writer的转换类:InputStreamReader, OutputStreamWriter
2、对象输入输出:ObjectInputStream, ObjectOutputStream
3、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter
4、合并输入:SequenceInputStream
5、更特殊的需要:PushbackInputStream, PushbackReader,
LineNumberInputStream, LineNumberReader
决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):
首先,考虑最原始的数据格式是什么:
是否为文本?
第二,是输入还是输出?
第三,是否需要转换流:InputStreamReader, OutputStreamWriter?
第四,数据来源(去向)是什么:文件?内存?网络?
第五,是否要缓冲:bufferedReader (特别注明:一定要注意的是readLine()是否有定义,有什么比read, write更特殊的输入或输出方法)
第六,是否要格式化输出:print?
分享到:
相关推荐
IO流知识点整理-思维导图
Java IO流是Java平台中用于处理输入输出操作的重要部分,对于任何Java开发者,尤其是准备面试或希望在大型公司如阿里、腾讯工作的候选人来说,掌握IO流的知识是必不可少的。以下是对Java IO流的详细解析: **一、为...
JAVA_IO流整理思维导图.
自己整理了一下javaIO流的相关知识点 用xmind软件做了一下
### 知识点一:网络编程基础 #### 1. IP地址 - **定义**:IP地址...以上就是从给定的文件标题、描述、标签和部分内容中整理出的相关知识点。希望这些信息能够帮助您更好地理解和掌握网络编程和集合类的基础知识。
通过实践,你可以更深入地理解Java集合、String和IO流的使用,提升你的编程技能。记得,理论与实践相结合是学习任何编程语言的关键,不断编写代码、调试错误,才能真正掌握这些知识。希望这份资料能成为你Java学习之...
Java核心面试知识整理包括了对JVM内存区域、垃圾回收机制、GC算法、JVM类加载机制、Java集合框架以及Java IO/NIO等多个方面的深入讲解。以下是对这些知识点的详细介绍: JVM内存区域:JVM内存区域包括了程序计数器...
这几个思维导图详细的整理了相关知识点的总结,以尽可能详细全面的进行总结.
本文档是一份关于Java核心面试知识的整理资料,内容涉及Java虚拟机(JVM)、Java内存模型、垃圾回收机制、Java IO/NIO、Java集合等多个关键知识点。通过对这些知识的梳理,能够帮助Java开发者更好地准备面试,同时也...
- **多路复用IO模型**:通过一个线程来监听多个IO流,当某个流准备好读取或写入时,才触发相应的处理逻辑。 - **信号驱动IO模型**:在进程发出IO请求后就可以继续做其他事情,当数据准备好时,操作系统会发送一个...
这份“JAVA核心面试知识整理-最全.zip”压缩包提供了全面的Java面试准备材料,涵盖了Java基础、Java虚拟机(JVM)、多线程并发以及算法和Java中间件等多个关键领域。 首先,让我们深入Java基础。这部分通常包括Java...
Java核心知识整理 Java是一种广泛使用的面向对象编程语言,它具有跨平台、对象导向、简单易学等特点。作为Java工程师,需要掌握Java的多方面知识点,包括但不限于JVM(Java虚拟机)原理、Java内存模型、垃圾回收...
Java作为一门广泛使用的后端开发语言,其核心面试知识涵盖了多方面内容,包括但不限于基础知识、数据结构与算法、集合框架、多线程、网络编程、IO流、异常处理、设计模式以及框架应用等。这份“Java核心面试知识整理...
接下来是Java的基础知识,涵盖了Java集合框架、IO/NIO模型、类加载机制等。Java集合框架提供了List、Set、Map等接口和实现类,例如ArrayList、Vector、LinkedList、HashSet、TreeSet、LinkedHashSet、HashMap、...
以下是对标题"JAVA核心面试知识整理"和描述的详细解读,以及与之相关的知识点。 1. **数据结构与算法**: - 数据结构:数组、链表、栈、队列、哈希表、树(二叉树、平衡树如AVL和红黑树)、图等。理解它们的时间...
本资料"JAVA高级知识点整理.rar"主要涵盖了多线程、虚拟机、Java IO/NIO以及Java集合框架等核心主题,旨在帮助开发者深入理解Java平台的高级特性和最佳实践。 首先,多线程是Java编程中的重要组成部分,它允许程序...
六、IO流 1. 流的概念:数据的输入输出通道,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer)两大类。 2. 文件操作:File类用于文件和目录的操作,如创建、删除、重命名等。 3. 转换流:...