今天课上老师将关于java对象流的课程ObjectInputStream和ObjectOutputStream,我一直在想事情没有注意听所以错过了些东西,下课前老师布置了关于java对象流的作业。我利用晚上的一些时间学习了一下顺便把作业给KO了。
下面是关于本次小程序的介绍
Student->持久化类
SaveStudent->将对象存储到磁盘上,文件名自己定,不一定要以.txt | .doc结尾。
ReadStudent->将保存在磁盘上的数据读入到控制台中。
ObjectIoTest->主要的测试
注意点:只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以采用默认的序列化方式 ,于是要在
Student类中导入:import java.io.Serializable;(有一个BUG,我已在评论中说明了,我这边终端怎么不好修改?)
1 package objectIO;
2
3 import java.io.Serializable;
4
5 public class Student implements Serializable{
6 /**
7 *
8 */
9 private static final long serialVersionUID = 1L;
10 private String stuName;
11 private int stuAge;
12 private String stuClass;
13 public String getStuName() {
14 return stuName;
15 }
16 public void setStuName(String stuName) {
17 this.stuName = stuName;
18 }
19 public int getStuAge() {
20 return stuAge;
21 }
22 public void setStuAge(int stuAge) {
23 this.stuAge = stuAge;
24 }
25 public String getStuClass() {
26 return stuClass;
27 }
28 public void setStuClass(String stuClass) {
29 this.stuClass = stuClass;
30 }
31
32 }
Student
1 package objectIO;
2
3 import java.io.File;
4 import java.io.FileNotFoundException;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 import java.io.ObjectOutputStream;
8 import java.io.Serializable;
9
10 public class SaveStudent implements Serializable {
11 /**
12 *
13 */
14 private static final long serialVersionUID = 1L;
15 public void SaveToFile(File file,Student[] stu){
16 try {
17 FileOutputStream fos = new FileOutputStream(file);
18 ObjectOutputStream oos = new ObjectOutputStream(fos);
19 oos.writeObject(stu);
20 System.out.println("-----------成功导入到文件-------------");
21 oos.flush();
22 oos.close();
23 } catch (FileNotFoundException e) {
24 e.printStackTrace();
25 } catch (IOException e) {
26 e.printStackTrace();
27 }
28 }
29 }
SaveStudent
1 package objectIO;
2
3 import java.io.File;
4 import java.io.FileInputStream;
5 import java.io.FileNotFoundException;
6 import java.io.IOException;
7 import java.io.ObjectInputStream;
8
9 public class ReadStudent {
10
11 public void readFromFIle(File file){
12 Student[] stu = new Student[5];
13 try {
14 ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
15 stu =(Student[]) ois.readObject();
16 for(int i = 0;i<stu.length;i++){
17 System.out.println("name:"+stu[i].getStuName()+" age:"+stu[i].getStuAge()+" Class:"+stu[i].getStuClass());
18 }
19 ois.close();
20 System.out.println("--------------共导入了"+stu.length+"条数据------------\n---------------成功读入文件--------------");
21 } catch (FileNotFoundException e) {
22 e.printStackTrace();
23 } catch (IOException e) {
24 e.printStackTrace();
25 } catch (ClassNotFoundException e) {
26 // TODO Auto-generated catch block
27 e.printStackTrace();
28 }
29
30 }
31
32 }
ReadStudent
1 package objectIO;
2
3 import java.io.File;
4 import java.util.Scanner;
5
6 public class ObjectIoTest {
7
8 public static void main(String[] args) {
9 //new ObjectIoTest().WriteObject(); //此处执行向文件的写入操作
10 //此处执行向控制台中读入操作
11 File file = new File("D:/MyDemo.DZ");
12 new ReadStudent().readFromFIle(file);
13
14 }
15 public void WriteObject(){
16 Student myStudent = new Student();
17 System.out.print("请输入需要存储的学生的个数:");
18 Scanner sc = new Scanner(System.in);
19 int n = sc.nextInt();
20 Student [] stu = new Student[n];
21 System.out.println("==========下面程序开始接受输入==========");
22 for(int i = 0;i<stu.length;i++){
23 System.out.print("请输入第"+(i+1)+"个学生的姓名:");
24 String stuName = sc.next();
25 myStudent.setStuName(stuName);
26 System.out.print("请输入第"+(i+1)+"个学生的年龄:");
27 int stuAge = sc.nextInt();
28 myStudent.setStuAge(stuAge);
29 System.out.print("请输入第"+(i+1)+"个学生的班级:");
30 String stuClass = sc.next();
31 myStudent.setStuClass(stuClass);
32 stu[i] = myStudent;
33 System.out.println("------------------------------------");
34 }
35 System.out.println("您一共输入了"+stu.length+"个学生");
36 File myFile = new File("D:/MyDemo.DZ");
37 new SaveStudent().SaveToFile(myFile, stu);
38 }
39
40 }
ObjectIoTest
转载于:https://www.cnblogs.com/struCoder/p/3434342.html