一.字节流
1.写数据
FileOutputStream(String name);底层会调用new File(“”)
调用方法: write()
void write(int b); 一次写一个
void write(byte[] b); 一次写一个字节数组
void write(byte[] b, int off, int len); 一次写一个字节数组的一部分
3. 释放资源: close()
2.读数据
FileInputStream()
read()
1.读一个字节
(char)fis.read()
2.读多个字节
int b;
while ((b = fis.read()) != -1) {
//System.out.println((char) b);
System.out.print((char) b);
}
释放资源: fis.close()
二.字节缓存流
1. BufferOutputStream: 字节缓冲输出流, 构造接收一个字节输出流对象
2. BufferedInputStream: 字节缓冲输入流, 构造接收一个字节输入流对象
三.字符流->编码表+字节流
1.字符输出流 写
构造方法
FileWriter(File对象);
FileWriter(字符串路径);
成员方法
- void write(int c); 写一个字符
- void write(char[] cbuf); 写一个字符数组
- void write(char[] cbuf, int off, int len); 写一个字符数组的一部分
- void write(String str); 写一个字符串
- void write(String str, int off, int len); 写一个字符串的一部分
flush和close方法
flush(); 刷新流; 刷新后还可以写数据
close(); 关闭流释放资源, 注意关闭前会先刷新流再关闭; 关闭后就不能继续写数据了
字符输入流 读
1. 创建字符输入流对象
FileReader
2. 读数据
读一个
用int接收,读出来为字节,转为char,就是字符
读一窝
2.1 创建字符数组
2.2 定义len表示读到的有效字符个数
2.3 如果没到文件结尾就继续读
2.4 将读到的字符数组作为参数, 构造新的字符串来打印
3.释放资源
四.字符缓存流
BufferedWriter:字符缓冲输出流, 可以高效的写出数据
BufferWriter: void newLine(); 换行
BufferedReader: 字符缓冲输入流, 可以高效的读取数据
BufferReader: void String readLine(); 读一行, 不读取换行符, 到达文件结尾为null
五.转换流
InputStreamReader
字节流 -> 字符流的桥梁, 使用指定的charset将 -> “读到的字节解码为字符”
OutputStreamWriter
字符流 -> 字节流的桥梁, 使用指定的charset将 -> “将字符编码为字节写出”
六.对象操作流
1. 对象序列化流 (对象输出流): ObjectOutputStream(字节输出流)
writeObject(对象名);
2. 2. 对象反序列化流 (对象输入流): ObjectInputStream(字节输入流)
readObject();
七.Properties(性能类)
Properties继承自Hashtable, Hashtable实现了Map接口, 所以Properties本质是一个map集合
Properties创建时不写泛型, 可以存储任意类型的数据;但是一般我们都存字符串 (键值对都声明为String)
方法
- Object setProperty(String key, String value); 设置集合的键和值 (等同于put)
- String getProperty(String key); 根据键返回值
- Set stringPropertyNames(); 返回一个不可修改的键集, 键和值都是字符串 (等同于keySet)
IO流结合的方法
void load(Reader reader); 从Properties文件读取键值对数据到内存
void store(OutputStream out, String comments); 从内存写键值对数据到Properties文件