IO流: 输入(Input)输出(Output)流
流: 数据流
输入: 从硬盘(文件)读取到内存(Java程序)
输出: 从内存(Java程序)写入到硬盘(文件)
(入和出都是相对于内存来说的)
+---------+
输入 | | 输出
--------> | 内存 | -------->
| |
+---------+
IO流的分类:
字节流 (读写字节: byte, 可以读写所有类型的文件, 包括视频, 图片, 音频, 文本等)
字节输入流: java.io.InputStream 抽象类
字节输出流: java.io.OutputStream 抽象类
字符流 (读写字符: char, String, 只能读写文本文件)
字符输入流: java.io.Reader 抽象类
字符输出流: java.io.Writer 抽象类
[Java] 纯文本查看 复制代码
java.io.OutputStream抽象类: 字节输出流 (顶层类)
// 成员方法
void close() :释放资源
void?flush() :刷新缓冲区(对于字节流来说没有作用)
// 写字节的成员方法
abstract void?write(int?b): 一次写一个字节 (参数是int是为了代码中写表示byte的整数方便不用强转)
void?write(byte[]?b): 一次写一个字节数组
void?write(byte[]?b,?int?off,?int?len): 一次写一个字节数组的一部分
java.io.FileOutputStream类: 文件字节输出流 (向文件写数据)
// 构造方法
FileOutputStream(String?name): 通过文件路径创建文件字节输出流
FileOutputStream(File?file): 通过File对象创建文件字节输出流
FileOutputStream(String?name, boolean append): 通过文件路径创建文件字节输出流, true可以续写
FileOutputStream(File?file, boolean append): 通过File对象创建文件字节输出流, true可以续写
字符字节输入输出流介绍
java.io.InputStream抽象类: 字节输入流 (顶层类)
// 常用成员方法
void?close(): 释放资源
// 读数据的方法
int?read(): 一次读一个字节. 读到文件末尾返回-1 (返回int也是为了代码编写方便)
int?read(byte[]?b): 一次读一个字节数组. 读到的字节存放在参数中的字节数组中, 返回int值是本次读到的字节的个数. 读到文件末尾返回-1
java.io.FileInputStream类: 文件字节输入流
// 构造方法
FileInputStream(String?name): 使用文件路径创建文件字节输入流
FileInputStream(File?file): 使用File对象创建文件字节输入流
java.io.Reader抽象类: 字符输入流 (顶层)
// 常用成员方法
void?close() :关闭此流并释放与此流相关联的任何系统资源
// 读数据的方法
int?read(): 一次读一个字符char, 返回读到的字符. 读到文件末尾返回-1 (返回int为了代码编写方便)
int?read(char[]?cbuf): 一次读取一个字符数组char[]. 返回读取的字符个数. 读到文件末尾返回-1
java.io.FileReader类: 文件字符输入流
// 构造方法
FileReader(File?file): 根据File对象创建文件字符输入流
FileReader(String?fileName): 根据File对象创建文件字符输入流
java.io.Writer抽象类: 字符输出流 (顶层类)
// 常用成员方法
abstract void?close(): 刷新缓冲区并释放资源
abstract void?flush() :刷新缓冲区
// 写
void?write(int?c): 写一个字符 (int类型为了代码编写方便)
void?write(char[]?cbuf): 写一个字符数组
abstract void?write(char[]?b,?int?off,?int?len): 写一个字符数组的一部分
void?write(String?str): 写一个字符串
void write(String str, int off, int len): 写一个字符串的一部分
java.io.FileWriter类: 文件字符输出流
// 构造方法
FileWriter(File?file): 通过File对象创建文件字符输出流
FileWriter(String?fileName): 通过文件路径创建文件字符输出流
FileWriter(File?file, boolean append): 通过File对象创建文件字符输出流. 第二个参数为true可以续写
FileWriter(String?fileName, boolean append): 通过文件路径创建文件字符输出流. 第二个参数为true可以续写
properties双列集合
[Java] 纯文本查看 复制代码
java.util.Properties类: 属性集, 属于Map的双列集合, 继承自Hashtable
// 构造方法
Properties(): 创建一个Properties集合
// 可以使用Map接口中的方法
// 特有成员方法
Object?setProperty(String?key,?String?value): 保存/替换键值对
String?getProperty(String?key): 通过键获取值. 键不存在返回null
Set<String> stringPropertyNames(): 返回键的集合
void store(OutputStream out, String comments): 将集合数据用字节流写入文件(不能中文), 并写入注释
void store(Writer writer, String comments): 将集合数据用字符流写入文件(可以中文), 并写入注释
void load(InputStream inStream): 从配置文件中通过字节流加载数据到Properties集合(不能读中文)
void load(Reader reader): 从配置文件中通过字符流加载数据到Properties集合(可以读中文)
day10【缓冲流、转换流、序列化流、打印流】
缓冲流的使用
[Java] 纯文本查看 复制代码
java.io.BufferedOutputStream类: 缓冲字节输出流
// 构造方法
BufferedOutputStream(OutputStream?out): 使用基本流创建一个缓冲字节输出流
BufferedOutputStream(OutputStream?out, int size): 使用基本流创建一个缓冲字节输出流, 设置缓冲区大小
java.io.BufferedInputStream类: 缓冲字节输入流
// 构造方法
BufferedInputStream(InputStream?in): 使用基本流创建一个缓冲字节输入流
BufferedInputStream(InputStream?in, int size): 使用基本流创建一个缓冲字节输入流, 设置缓冲区大小
java.io.BufferedWriter类:
// 构造方法
BufferedWriter(Writer?out): 使用基本流创建一个缓冲字符输出流
BufferedWriter(Writer?out, int size): 使用基本流创建一个缓冲字符输出流, 设置缓冲区大小
// 特有方法
void?newLine(): 写入一个换行符, 换行符自动根据当前系统确定
java.io.BufferedReader类: 缓冲字符输入流
// 构造方法
BufferedReader(Reader?in): 使用基本流创建一个缓冲字符输入流
BufferedReader(Reader?in, int size): 使用基本流创建一个缓冲字符输入流, 设置缓冲区大小
// 特有方法
String?readLine(): 一次读一行字符串, "不包含换行符".
读到文件末尾返回 null
转换流的使用
[Java] 纯文本查看 复制代码
java.io.OutputStreamWriter类: 输出转换流. 字符流通往字节流的桥梁
// 构造方法
OutputStreamWriter(OutputStream?out): 使用默认编码表创建转换流
OutputStreamWriter(OutputStream?out,?String?charsetName): 使用指定编码表创建转换流
java.io.InputStreamReader类: 输入转换流. 字节流通往字符流的桥梁
// 构造方法
InputStreamReader(InputStream?in): 使用默认编码表创建转换流
InputStreamReader(InputStream?in,?String?charsetName): 使用指定编码表创建转换流
序列化流的使用
[Java] 纯文本查看 复制代码
java.io.ObjectOutputStream类: 对象字节输出流
// 构造方法
ObjectOutputStream(OutputStream?out)
// 特有成员方法
void?writeObject(Object?obj): 将对象写出
java.io.ObjectInputStream类: 对象字节输入流
// 构造方法
ObjectInputStream(InputStream?in)
// 特有成员方法
Object?readObject(): 读取对象
字节打印流的使用
[Java] 纯文本查看 复制代码
java.io.PrintStream类: 字节打印流
// 构造方法
PrintStream(File file): 创建字节打印流, 输出到一个文件
PrintStream(OutputStream out): 创建字节打印流, 输出到一个字节输出流
PrintStream(String?fileName): 创建字节打印流, 输出到一个文件路径
扩展:
java.lang.System类:
// 静态方法(System类中的)
static void setOut(PrintStream out): 设置System.out的输出目的地为参数的打印流