练习--序列化集合和打印流--概述和使用
练习--序列化集合
练习:序列化集合
当我们想在文件中保存多个对象的时候
可以把多个对象存储到一个集合汇总
对集合进行序列化和反序列化
分析:
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是自带换行的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix