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]