缓冲流
1. 概述
- 缓冲流可以提高字节流和字符流的读写数据的性能
- 缓冲流有时候也叫高级流,基本的字节流也叫低级流(原始流)
2. 分类
2.1 字节缓冲输入流BufferedInputStream
可以提高字节输入流读数据的性能
作用是可以把低级的字节输入流包装成一个高级的缓冲字节输入管道,从而提高读数据的性能
-
构造器
publicBufferedInputStream(InputStream in);
-
原理
- 缓冲字节输入流管道包装了低级的字节输入流管道以后就自带一个缓冲池
- 缓冲池是内存的一块区域,一次可以直接提取8KB数据到内存后程序直接在内存的缓冲池中读取数据,性能是很快的
2.2 字节缓冲输出流BufferedOutputStream
可以提高字节输出流写数据的性能
作用是可以把低级的字节输出流包装成一个高级的缓冲字节输出流,从而提高写数据的性能
-
构造器
public BufferedOutputStream(OutputStream os);
原理: 缓冲字节输出流自带了8KB缓冲池,数据就直接写入到缓冲池中去,性能极高!
2.3 字符缓冲输入流BufferedReader
可以提高字符输入流读数据的性能
作用是字节缓冲输入流可以把字符输入流包装成一个高级的缓冲字符输入流,可以提高读数据的性能
-
构造器
public BufferedReader(Reader reader);
-
原理
缓冲字符输入流默认会有一个8KB的字符缓冲池,可以提高读字符的性能
重点功能
public StringreadLind(); // 读取一行数据返回!!读取完毕了返回null
2.4 字符缓冲输出流BufferedWriter
可以提高字符输出流写数据的性能
作用是把字符输出流包装成一个高级的缓冲字符输出流,提高写字符数据的性能
-
构造器
public BufferedWriter(Writer writer);
-
原理
高级的字符缓冲输出流多了一个8KB的字符缓冲池,写数据性能极大提高了
特有功能
public ovid enwLine(); // 新建一行
字节字符转换
1. 字符输入转换流InputStreamReader
作用: 把原始的字节输入流按照指定的编码转换成字符流,从而解决不同编码读取数据乱码的问题
-
构造器
// 默认是以当前代码编码转换成字符流(几乎不用) public InputStreamReader(InputStream is); // 指定编码转换成字符流(很重要) public InputStreamReader(InputStream is, String charset);
2. 字符转换输出流OutputStreamWriter
作用: 可以把字节输出流按照指定编码转换成字符输出流,可以实现写某种编码的字符数据出去
-
构造器
public OutputStreamWriter(OutputStream os); public OutputStreamWriter(OutputStream os, String charset);
序列化
1. 序列化ObjectOutputStream
把Java对象储存到文件中去
-
构造器
public ObjectOutputStream(OutputStream os);
-
方法
public final void writeObject(Object obj); // 序列化对象
-
注意: 对象如果要参与序列化,类必须实现序列化接口
class 类名 implements Serializable{}
- 如果某个字段不想参与序列化: 加上transient 修饰即可
2. 反序列化ObjectInputStream
把Java对象从文件夹读取
-
构造器
public ObjectInputStream(InputStream is);
-
方法
public final Object readObject();
-
注意:对象类需要申明序列化版本号
private static final long serialVersionUID = 1;
打印流
可以方便并且高效的打印各种类型的数据出去
1. PrintStream
构造器
public PrintStream(OutputStream os); // 直接同学字节输出流
public PrintStream(String path); // 直接通向文件地址
2. PrintWriter
构造器
public PrinWriter(OutputStream os); // 直接通向字节输出流
public PrintWriter(Writer out); // 直接通向字符输出流
public PrintWriter(String path); // 直接通向文件地址
3. 重定向流: System类
// 让输出语句的内容走向打印流,打印流走入文件中
public static void setOut(PrintStream out);
Properties属性集对象
1. 概述
- Properties是一个Map集合,也就是一个键值对集合,代表的是一个属性文件,可以把键值对的数据存入到一个属性文件中
- 属性文件
- 后缀是 .properties结尾的文件
- 里面的内容是 key=value
2. 使用
public Object serProperty(String key, String value); // 保存一对属性
public String getProperty(String key); // 使用此属性列表中指定的键搜索属性值
public Set<String> stringPropertyNames(); // 所有键的名称的集合
public void store(OutputStream out, String comments); // 保存数据到属性文件中去
public synhcronized void load(InputStream inStream); // 加载属性文件的数据到属性集对象中去