一、ObjectInputStream、ObjectOutputStream
进行对象序列化和反序列化:将Java对象按照结构转换为一组字节过程,可以将类的参数保存为文件。或者读取文件获得类的参数。
String name="小苍老师";
int age=24987;
String gender="男";
String[] otherInfo={"技术好","启蒙老师"};
Person person=new Person(name,age,gender,otherInfo);
FileOutputStream fo=new FileOutputStream("Objfile.txt");
ObjectOutputStream ofo=new ObjectOutputStream(fo);
// 类必须实现implements Serializable接口
ofo.writeObject(person);
ofo.close();
将Person的参数保存到Object.txt文件中。
通过ObjectInputStream读取文件
File file=new File("Objfile.txt") ;
FileInputStream fi=new FileInputStream(file);
ObjectInputStream ofi=new ObjectInputStream(fi);
System.out.println(ofi);//java.io.ObjectInputStream@3b9a45b3
Object o=ofi.readObject();
System.out.println(o);//Person{name='小苍老师', age=24987, gender='男', otherInfo=[技术好, 启蒙老师]}
Person person=(Person)o;
System.out.println(person);
//Person{name='小苍老师', age=24987, gender='男', otherInfo=[技术好, 启蒙老师]}
readObject的返回值为Object,需要将其转变为Person类,再做接受。3个不同的输出语句,表示为:1、Object 2、字符串 3、Person的参数列表。
二、二进制和字符串转换
将字符串转换为二进制数byte[] bytes1 = str1.getBytes(StandardCharsets.UTF_8);
将二进制数转换为字符串String s = new String(bytes, StandardCharsets.UTF_8);
三、BufferedOutputStream、BufferedInputtStream
缓冲流读写,主要作用于快速的读写操作,块写只发生在基本数据流中,不发生在高级流中,因为高级流默认的数组有1024*8的大小,也可以自定义。