1 packageorg.java;2
3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.io.ObjectInputStream;8 importjava.io.ObjectOutputStream;9 importjava.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 classObject {25
26 public static voidmain(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=newFileOutputStream(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 }