• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Niro Einteson
文可提笔安天下 武可上马定乾坤
博客园    首页    新随笔    联系   管理    订阅  订阅

Java对象流

 

 1 package org.java;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.ObjectInputStream;
 8 import java.io.ObjectOutputStream;
 9 import java.io.Serializable;
10 /*
11  ObjectOutputStream:对象输入流
12  ObjectInputStream:对象输出流
13  分别是 InputStream和OutputStream的子类
14  构造方法
15  ObjectOutputStream(OutputStream out);
16  ObjectInputStream(InputStream in);
17  先用InputStream的子类 创建一个 流对象(如:fileInputStream),然后 用ObjectInputStream(fileInputStream)接收参数 创建对象流
18  注意:对象实现Serializable接口-- 即:implements Serializable 就可以了
19  使用
20  writeObject(Object object);//将对象 写入文件中
21  readObject();//读取一个文件到程序中-->需要强制类型转换成 自定的对象
22  
23  */
24 public class Object {
25 
26     public static void main(String[] args) {
27         /*
28          * 定义一个Student类,里面含name、age属性;
29          * 定义一个测试类,创建一个Student数组,数组中的Student对象赋初值,
30          * 将数组中的各个Student对象的内容输出到student.txt文件中;
31          * 然后将文件中的内容读出并在显示器中显示出来。
32          * 
33          */
34         //ObjectOutputStream是对Java对象进行序列号处理,处理后的数据,不是文本数据,所以该数据保存到txt中,必然是乱码。
35         //创建一个Student数组,数组中的Student对象赋初值,
36         Student[] students=new Student[5];
37         for(int i=0;i<5;i++) {
38             students[i]=new Student("名字Jack"+i, 20+i);
39         }
40         try {
41             // 将数组中的各个Student对象的内容输出到student.txt文件中;
42             //需要在try-catch语句中 
43             String path="C:\\Users\\Nirobert Einteson\\Desktop\\java\\File\\";//文件的所在的目录 
44             File studentFile=new File(path+"student.txt");
45             
46             FileOutputStream fileOutputStream=new FileOutputStream(studentFile);
47             ObjectOutputStream objectOutputStream=new ObjectOutputStream(fileOutputStream);//源 是fileOutputStream
48             for(Student student:students) {
49                 //System.out.println(student);
50                 objectOutputStream.writeObject(student);
51             }
52             objectOutputStream.writeObject(null);//写入空,判断 是否到达末尾了 
53             objectOutputStream.flush();//清空缓冲区
54             objectOutputStream.close();//先关闭增强型的 对象流
55             fileOutputStream.close();//然后再关闭 字节型 流
56             
57             //关闭 写的文件之后,才能读文件;
58             //然后将文件中的内容读出并在显示器中显示出来。
59             FileInputStream fileInputStream=new FileInputStream(studentFile);//读取这个文件,先变成字节流文件
60             ObjectInputStream objectInputStream=new ObjectInputStream(fileInputStream);//字节流文件 作为 源
61             Student student;//需要强制类型转换(Student)objectInputStream.readObject();
62             while((student=(Student)objectInputStream.readObject())!=null) {//引用型,为空返回值是null//如果不是没有加入null的话,容易抛出异常;
63                 System.out.println(student);
64             }
65             objectInputStream.close();
66             fileInputStream.close();
67             
68         }catch (Exception e) {
69             System.out.println(e);
70         }        
71     }
72 
73 }
 1 package org.java;
 2 
 3 import java.io.Serializable;
 4 
 5 public class Student implements Serializable{
 6     String name;
 7     int age;
 8     public Student() {
 9         
10     }
11     public Student(String name,int age) {
12         this.name=name;
13         this.age=age;
14     }
15     @Override
16     public String toString() {
17         return "Student [name=" + name + ", age=" + age + "]";
18     }
19     
20 }

 

1 Student [name=名字Jack0, age=20]
2 Student [name=名字Jack1, age=21]
3 Student [name=名字Jack2, age=22]
4 Student [name=名字Jack3, age=23]
5 Student [name=名字Jack4, age=24]
posted @ 2019-12-11 17:19  Nirogo  阅读(312)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3