一、转换流
1、 OutputStreamWriter——指定编码将要写入文件的字符编码成字节
1.1构造方法:
(1)public OutStreamWriter(OutputStream out); 创建使用默认字符编码的OutputStreamWriter对象(默认为UTF-8)
OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("test.md"));
(2)public OutStreamWriter(OutputStream out,String charsetName); 指定字符编码名
2、InputStreamReader——将读取的字节变为字符
2.1构造方法:
(1)public InputStreamReader(InputStream in); 创建使用默认字符编码的InputStreamReader对象(默认为UTF-8)
InputStreamReader in = new InputStreamReader(new FileInputStream("test.md"));
(2)public InputStreamReader(InputStream in,String charsetName); 指定字符编码名
二、序列化流(使用static transient修饰的成员变量无法进行序列化)
1、ObjectOutputStream——将对象序列化成字节存储到文件中
1.1构造方法:
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("test.md"));
1.2特有方法:
Test test = new Test("李",15);
out.writeObject(test);//传入一个对象
2、ObjectInputStream——读取对象
2.1构造方法:
ObjectInputStream in = new ObjectInputStream(new FileInputStream("test.md"));
2.2特有方法:
Object o = in.readObject();
注:1.自定义类对象需要继承Serializable类
public class Test implements Serializable
2.直接读取对象,只能获取到地址,需要获取到输入对象的具体值,需要在自定义类中重写toString()方法
@Override
public String toString() {
return "Test{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
3.为了防止序列化,反序列化出现问题,可以定义一个固定的序列号
private static final long serialVersionUID=1;
三、打印流——PrintStream
1、构造方法
PrintStream print = new PrintStream("test2.txt");
2、特有方法
System.setOut(print);