典型的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
FileOutputStream
BufferedOutputStream
......
FilterOutputStream
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分别用于基本类型的读写操作。
分享到:
相关推荐
Java.io.CharConversionException: isHexDigit 处理详解 Java.io.CharConversionException: isHexDigit 是 Java 中一种常见的异常,通常发生在传输数据时编码不正确或 URL 传值时出现问题。本文将对该异常进行详细...
### Java.io.Reader与Java.io.InputStream的关键差异解析 在深入探讨`java.io.Reader`与`java.io.InputStream`的具体差异之前,我们首先需要理解这两者在Java I/O操作中的基础角色。`java.io.Reader`和`java.io....
### Java.io.InvalidClassException Local Class Incompatible 解决方案 在Java序列化过程中,经常会遇到`java.io.InvalidClassException`异常,特别是在序列化类时如果类的版本与反序列化环境中的类版本不一致的...
在Java编程中,"java.io.FileNotFoundException: ***** (Too many open files)" 是一个常见的错误,意味着程序尝试打开的文件数量超过了操作系统的限制。这个错误通常出现在处理大量文件或长时间运行的程序中,尤其...
在探讨Java.nio与Java.io之间的比较时,我们首先需要理解这两个包在Java编程语言中的核心作用和它们各自的优势。Java.io和Java.nio是Java中处理输入/输出操作的两个主要框架,它们各自拥有独特的特性和应用场景。 #...
`java.io.Writer`是所有字符输出流的父类,它定义了一些基本方法,如写入单个字符、写入字符数组等。 - `public void write(int c)`:向流中写入单个字符。 - `public void write(char[] cbuf)`:将字符数组中的...
import java.io.*; public class udptest { ///创建一个数据包套接字对象ds,并且指定连接的端口号 ///创建一个数据包对象dp ///指定一个字节数组,用来存储接受的数据 public static void rev() { try { ...
理解java.util.stream.Stream与java.io.Stream的区别对于Java开发者来说非常重要。这两种Stream在Java生态系统中都扮演着重要的角色,但它们服务于不同的目的。正确选择和使用这两种Stream,可以帮助你编写更高效、...
在Java中,IO操作主要分为字节流和字符流两大类,分别由`java.io.InputStream`和`java.io.OutputStream`以及`java.io.Reader`和`java.io.Writer`作为基类。字节流处理的是8位的字节,而字符流处理的是16位的Unicode...
import java.io.*; public class FirstPart{ public static void main(String[] args) throws Exception{ System.out.print("The input Fahrenheit is "); BufferedReader br = new BufferedReader(new ...
java.io clojure.java.io 的 JK7 java.nio.file.Path 兼容性依赖信息该库托管在 Releases 上。 依赖: [me.moocar/java.io " 0.1.0 " ]用法是 JDK7 中引入的文件路径的抽象。 这个库提供了和 Paths 之间的兼容性。 ...
本资源“java_io.rar”提供了关于如何在Java中进行文件操作的示例代码,包括读取、移动、删除和复制文件等常见任务。我们将深入探讨这些主题,以便更好地理解Java I/O API的使用。 首先,让我们从读取本地文件开始...
常见的问题
常见的问题
【Java IO包详解】 Java IO包是Java标准库中的核心组件之一,主要用于处理输入和输出操作。这个包包含了大量类和接口,它们提供了各种输入输出流、字符编码、数据转换以及文件操作等功能。Java IO的设计采用了...
import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream...
a)java.sql b) java.util c) java.math d) java.io 2.不属于java.io包中的接口的一项是(C) a)DataInput b) DataOutput c) DataInputStream d) ObjectInput 3. ByteArrayOutputStream将下列哪一项作为输出流 C a)...
gnu.io.CommDriver.class gnu.io.CommPort.class gnu.io.CommPortEnumerator.class gnu.io.CommPortIdentifier.class gnu.io.CommPortOwnershipListener.class gnu.io.Configure.class gnu.io.I2C.class gnu.io.I2...
项目中碰到的,记录一下解决方案
常见的问题