Java IO 概述
Java IO 概述
java.io 通过数据流、序列化和文件系统提供系统输入和输出。
输入和输出 – 数据源和目标媒介
输入和输出经常混淆,疑惑。
- 输入流:向内存输入 即程序(内存)读取
- 输出流:从内存输出 即程序(内存)输出
为了消除这种疑惑,java输入输出从名字上有一定的区分,从而从概念上与数据的来源和数据的流向想联系。
Java的IO包主要关注的是从原始数据源的读取以及输出原始数据到目标媒介。以下是最典型的数据源和目标媒介:
- 文件
- 管道
- 网络连接
- 内存缓存
- System.in, System.out, System.error(Java标准输入、输出、错误输出)
流
在Java IO中,流是一个核心的概念。流从概念上来说是一个连续的数据流。既可以从流中读取数据,也可以往流中写数据。流与数据源或者数据流向的媒介相关联。在Java IO中流既可以是字节流(以字节为单位进行读写),也可以是字符流(以字符为单位进行读写)。
字节和字符的区别 :没有区别,仅仅是占用空间大小不同。
类InputStream, OutputStream, Reader 和Writer
InputStream、Reader 从数据源读取数据,即:数据源读入数据到内存中。程序读取
OutputStream、Writer将数据写入媒介中,即:从内存写入数据到媒介中。程序输出
Java IO的用途和特征
Java IO中包含了许多InputStream、OutputStream、Reader、Writer的子类。每一个类都负责不同的功能。
- 文件访问
- 网络访问
- 内存缓存访问
- 线程内部通信(管道)
- 缓冲
- 过滤
- 解析
- 读写文件(Readers / Writers)
- 读取基本类型数据(long,int)
- 读写对象
java.io相关类
类摘要 | |
---|---|
BufferedInputStream | 作为另一种输入流,BufferedInputStream 为添加了功能,即缓冲输入和支持 mark 和 reset 方法的能力。 |
BufferedOutputStream | 该类实现缓冲的输出流。 |
BufferedReader | 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。 |
BufferedWriter | 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 |
ByteArrayInputStream | ByteArrayInputStream 包含一个内部缓冲区,该缓冲区存储从流中读取的字节。 |
ByteArrayOutputStream | 此类实现了一个输出流,其中的数据被写入一个字节数组。 |
CharArrayReader | 此类实现一个可用作字符输入流的字符缓冲区。 |
CharArrayWriter | 此类实现一个可用作 Writer 的字符缓冲区。 |
DataInputStream | 数据输入流允许应用程序以与机器无关方式从基础输入流中读取基本 Java 数据类型。 |
DataOutputStream | 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。 |
File | 文件和目录路径名的抽象表示形式。 |
FileDescriptor | 文件描述符类的实例用作与基础机器有关的某种结构的不透明句柄,该结构表示开放文件、开放套接字或者字节的另一个源或接收者。 |
FileInputStream | FileInputStream 从文件系统中的某个文件中获取输入字节。 |
FileOutputStream | 文件输出流是用于将数据写入 File 或 FileDescriptor 的输出流。 |
FilePermission | 此类表示对文件和目录的访问。 |
FileReader | 用来读取字符文件的便捷类。 |
FileWriter | 用来写入字符文件的便捷类。 |
FilterInputStream | FilterInputStream 包含其他一些输入流,它将这些流用作其基本数据源,它可以直接传输数据或提供一些额外的功能。 |
FilterOutputStream | 此类是过滤输出流的所有类的超类。 |
FilterReader | 用于读取已过滤的字符流的抽象类。 |
FilterWriter | 用于写入已过滤的字符流的抽象类。 |
InputStream | 此抽象类是表示字节输入流的所有类的超类。 |
InputStreamReader | InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 [charset ] 读取字节并将其解码为字符。 |
LineNumberInputStream | 已过时。 此类错误假定字节能充分表示字符。 |
LineNumberReader | 跟踪行号的缓冲字符输入流。 |
ObjectInputStream | ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。 |
ObjectInputStream.GetField | 提供对从输入流读取的持久字段的访问权限。 |
ObjectOutputStream | ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream。 |
ObjectOutputStream.PutField | 提供对要写入 ObjectOutput 的持久字段的编程访问。 |
ObjectStreamClass | 类的序列化描述符。 |
ObjectStreamField | Serializable 类中 Serializable 字段的描述。 |
OutputStream | 此抽象类是表示输出字节流的所有类的超类。 |
OutputStreamWriter | OutputStreamWriter 是字符流通向字节流的桥梁:使用指定的 [charset ]将要向其写入的字符编码为字节。 |
PipedInputStream | 传送输入流应该连接到传送输出流;传送输入流会提供要写入传送输出流的所有数据字节。 |
PipedOutputStream | 传送输出流可以连接到传送输入流,以创建通信管道。 |
PipedReader | 传送的字符输入流。 |
PipedWriter | 传送的字符输出流。 |
PrintStream | PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。 |
PrintWriter | 向文本输出流打印对象的格式化表示形式。 |
PushbackInputStream] | PushbackInputStream 向另一个输入流添加“推回 (push back)”或“取消读取 (unread)”一个字节的功能。 |
PushbackReader | 允许将字符推回到流的字符流 reader。 |
RandomAccessFile | 此类的实例支持对随机存取文件的读取和写入。 |
Reader | 用于读取字符流的抽象类。 |
SequenceInputStream | SequenceInputStream 表示其他输入流的逻辑串联。 |
SerializablePermission | 此类用于可序列化权限。 |
StreamTokenizer | StreamTokenizer 类获取输入流并将其分析为“标记”,允许一次读取一个标记。 |
StringBufferInputStream | 已过时。 此类未能正确地将字符转换为字节。 |
StringReader | 其源为一个字符串的字符流。 |
StringWriter | 一个字符流,可以用其回收在字符串缓冲区中的输出来构造字符串。 |
Writer | 写入字符流的抽象类。 |