I/O流(重点)
1.1 基本概念
I/O就是Input/Output的简写,也就是输入/输出的含义。
I/O流就是指像流水一样不间断地进行读写的状态,因此得名为"流"。
1.2 基本分类
按照读写数据的单位不同分为字节流和字符流。
其中字节流主要指以字节为单位进行读写的流,可以用于读写任意类型的文件。
其中字符流主要指以字符(2个字节)为单位进行读写的流,只能用于读写文本文件。
按照数据流动的方向不同分为输入流和输出流(站在程序的角度)。
其中输入流主要指将文件中的数据内容输入到程序中,也就是用于读文件。
其中输出流主要指将程序中的数据内容输出到文件中,也就是用于写文件。
1.3 基本框架
字节流的顶层父类:InputStream类 和 OutputStream类 - 抽象类
其中InputStream类的主要实现类:
FileInputStream类、DataInputStream类(间接子类)、ObjectInputStream类
其中OutputStream类的主要实现类:
FileOutputStream类、DataOutputStream类(间接子类)、ObjectOutputStram类
字符流的顶层父类:Reader类 和 Writer类 - 抽象类
其中Reader类的主要实现类:
BufferedReader类、InputStreamReader类
其中Writer类的主要实现类:
BufferedWriter类、OutputStreamWriter类
**补充:java.io.PrintStream类是OutputStream类的间接子类。**
2.1 FileOutputStream类(重中之重)
(1)基本概念
java.io.FileOutputStream类用于写入图像数据之类的原始字节流到输出流中。
(2)常用的方法
FileOutputStream(String name) - 根据参数指定文件名来构造对象。
FileOutputStream(String name, boolean append) - 以追加的方式构造对象。
void write(int b) - 用于将参数指定的单个字节写入输出流。
void write(byte[] b, int off, int len)
- 用于将数组b中从下标off开始的len个字节写入输出流。
void write(byte[] b)
- 用于将数组b中的所有内容写入输出流。
void close() - 用于关闭流对象并释放有关的资源。
2.2 FileInputStream类(重中之重)
(1)基本概念
java.io.FileInputStream类主要用于从输入流中读取图像数据之类的原始字节流。
(2)常用的方法
FileInputStream(String name) - 根据参数指定的文件名来构造对象。
int read() - 用于读取一个字节的数据并返回。
- 若读取到文件末尾则返回-1,否则返回实际读取到的内容。
int read(byte[] b, int off, int len)
- 用于读取len个字节放入数组b中下标从off开始的位置。
- 若读到末尾则返回-1,否则返回实际读取的数据大小。
int read(byte[] b)
- 用于读取b.length个字节的数据放入数组b中。
int available() - 用于获取输入流所关联的文件大小。
void close()
2.3 DataOutputStream类(会用即可)
(1)基本概念
java.io.DataOutputStream类主要用于将Java语言中基本数据类型的数据写入输出流。
(2)常用的方法
DataOutputStream(OutputStream out) - 根据参数指定的引用构造对象。
- 其中OutputStream类是个抽象类,实参需要传递子类对象。
void writeInt(int v)
- 用于将参数指定的整数以四字节的方式写入输出流,先写入高字节。
- 如:127 - 0000 0000 0000 0000 0000 0000 0111 1111
高 => 低
void close()
2.4 DataInputStream类(会用即可)
(1)基本概念
java.io.DataInputStream类用于从输入流中读取基本数据类型的数据。
(2)常用的方法
DataInputStream(InputStream in) - 根据参数指定的引用构造对象。
- 其中InputStream类是个抽象类,实参需要传递子类的对象。
int readInt() - 用于从输入流读取四个字节的整数并返回。
void close()
2.5 BufferedWriter类(重点)
(1)基本概念
java.io.BufferedWriter类主要用于写入单个字符、字符数组以及字符串。
(2)常用的方法
BufferedWriter(Writer out) - 根据参数指定的引用构造对象。
- 其中Writer类是个抽象类,实参需要传递子类的对象。
void write(int c) - 用于写入参数指定的单个字符。
void write(char[] cbuf, int off, int len)
- 用于将cbuf中下标从off开始的len个字符写入输出流。
void write(char[] cbuf)
- 用于将cbuf中的所有内容写入输出流。
void write(String str)
- 用于将参数str指向的字符串写入输出流中。
void newLine() - 用于写入行分隔符。
void close()
2.6 BufferedReader类(重点)
(1)基本概念
java.io.BufferedReader类主要用于从输入流中读取单个字符、字符数组以及一行字符串。
(2)常用的方法
BufferedReader(Reader in) - 根据参数指定的引用构造对象。
- 其中Reader是个抽象类,实参需要传递子类对象。
int read() - 用于读取单个字符。
- 若读取到末尾则返回-1,否则返回读取的数据内容。
int read(char[] cbuf, int off, int len)
- 用于读取len个字符存放到数组cbuf中从下标off开始的位置上。
int read(char[] cbuf)
- 用于读取cbuf.length个字符存放到数组cbuf中。
- 若读到末尾则返回-1,否则返回实际读取的字符个数。
String readLine() - 用于读取一行字符串。
void close()
3.1 PrintStream类(重点 与BufferedReader类搭配使用)
(1)基本概念
java.io.PrintStream类主要用于方便地打印各种类型的数据内容。
(2)常用的方法
PrintStream(OutputStream out) - 根据参数指定的引用构造对象。
- 其中OutputStream类是个抽象类,实参需要传递子类的对象。
void print(String s) - 用于打印参数指定的字符串。
void println(String x) - 用于打印字符串并换行。
void close()
3.2 ObjectOutputStream类(重点)
(1)基本概念
java.io.ObjectOutputStream类主要用于将Java语言的对象整体写入输出流中。
只能将支持 java.io.Serializable 接口的对象写入流中。
类通过实现 java.io.Serializable 接口以启用其序列化功能。
所谓序列化就是指将一个对象中的所有内容有效地组织成字节序列的转化过程。
(2)常用的方法
ObjectOutputStream(OutputStream out) - 根据参数指定的引用来构造对象。
- 其中OutputStream类是个抽象类,实参需要传递子类的对象。
void writeObject(Object obj)
- 用于将参数指定的对象obj写入输出流中。
void close()
3.3 ObjectInputStream类(重点)
(1)基本概念
java.io.ObjectInputStream类主要用于从输入流中将对象整体读取出来。
(2)常用的方法
ObjectInputStream(InputStream in) - 根据参数指定的引用来构造对象。
- 其中InputStream类是个抽象类,实参需要传递子类的对象。
Object readObject()
- 用于从输入流中读取一个对象并返回
- 该方法无法通过返回值判断是否读到末尾。
void close()