401练习序列化结合和402打印流_概述和使用
练习--序列化集合
练习:序列化集合
当我们想在文件中保存多个对象的时候
可以把多个对象存储到一个集合汇总
对集合进行序列化和反序列化
分析:
1.定义一个存储Person对象的ArrayList集合
2.往ArrayList集合中存储Person对象
3.创建一个序列化流ObjectOutputStream对象
4.使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化
5.创建一个反序列化ObjectInputStream对象
6.使用ObjectInputStream对象汇总的方法readObject读取文件中保存的集合
7. 把Object类型的结婚转换为ArrayLIst类型
8.遍历ArrayList集合
9.释放资源
Person
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
public String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
测试
public static void main(String[] args) throws IOException, ClassNotFoundException {
//1.定义一个存储Person对象的ArrayList集合
ArrayList<Person> people = new ArrayList<>();
// 2.往ArrayList集合中存储Person对象
people.add(new Person("安培",7));
people.add(new Person("米老鼠",8));
people.add(new Person("大逼斗",9));
// 3.创建一个序列化流ObjectOutputStream对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("b.txt"));
//4.使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化
oos.writeObject(people);
//5.创建一个反序列化ObjectInputStream对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.txt"));
// 6.使用ObjectInputStream对象汇总的方法readObject读取文件中保存的集合
Object o = ois.readObject();
// 7.把Object类型的集合转换为ArrayLIst类型
ArrayList<Person> arr = (ArrayList<Person>)o;
//8.遍历ArrayList集合
for (Person person : arr) {
System.out.println(person);
}
//9.释放资源
ois.close();
oos.close();
}
打印流--概述和使用
/*
java.io.PrintStream:打印流
PrintStream为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。
PrintStream特点:
1.只负责数据的输出,不负责数据的读取
2.与其他输出流不同,PrintStream永远不会抛出IOException
3.有特有的方法, print , println
void print(任意类型的值)
void println(任意类型的值并换行)
构造方法:
PrintStream(FiLe file):输出的目的地是一个文件
PrintStream ( OutputStream out):输出的目的地是一个字节输出流
PrintStream( String fiLeName):输出的目的地是一个文件路径
PrintStream extends OutputStream
继承自父类的成员方法:
public void close():关闭此输出流并释放与此流相关联的任何系统资源。
public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
public void write(byte[] b):将b.Length字节从指定的字节数组写入此输出流。
public void write(byte[] b, int off, int Len):从指定的字节数组写入Len字节,从偏移量off开始输出到此输出流。
public abstract void write(int b):将指定的字节输出流。
注意:
如果使用继承自父类的write方法写数据,那么查看数据的时候会查询编码表
如果使用字节特有的方法print/println方法写数据,写的数据原样输出
*/
public static void main(String[] args) throws FileNotFoundException {
//创建打印流printStream对象,构造方法中绑定要输出的目的地
PrintStream p = new PrintStream("o.txt");
//如果使用继承自父类的write方法写数据,那么查看数据的时候会查询编码表
p.write(97);
//如果使用自己特有的方法print/println方法写数据,写的数据原样输出
p.println(97);
p.println(9.7);
p.println('p');
p.println("HelloJAVA");
p.println(true);
//释放资源
p.close();
}
println是自带换行的

浙公网安备 33010602011771号