文本读取
程序员文章站
2023-01-29 19:32:08
7、根据要求编写程序:(1)创建类Student,内含学号、姓名、年龄、班级等属性,重写父类的toString()方法,用于输出学生的信息;(2)建立测试类,建立Student类的对象数组stuArray,里面放置若干个学生对象,将数组中的数据依次写入文件stu.dat,然后读取该文件中的信息,依次还原出数组中各Student对象的信息。Student类package Topic7;import java.io.Serializable;public class Student implem...
7、根据要求编写程序:
(1)创建类Student,内含学号、姓名、年龄、班级等属性,重写父类的toString()方法,用于输出学生的信息;
(2)建立测试类,建立Student类的对象数组stuArray,里面放置若干个学生对象,将数组中的数据依次写入文件stu.dat,然后读取该文件中的信息,依次还原出数组中各Student对象的信息。
Student类
package Topic7;
import java.io.Serializable;
public class Student implements Serializable{
String ID;
String name;
String age;
String classString;
public Student() {
}
public Student(String ID,String name,String age,String classString) {
this.ID=ID;
this.name=name;
this.age=age;
this.classString=classString;
}
public String toString() {
return " [学号:" + ID + ", 姓名:" + name + ", 年龄:" + age + ", 班级:" + classString + "]";
}
}
主类
package Topic7;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
public class test {
public static void main(String[] args) throws Exception {
Student[] stuArray = new Student[7];
stuArray[0] = new Student("001", "aaa", "18", "jk1806");
stuArray[1] = new Student("002", "bbb", "19", "jk1806");
stuArray[2] = new Student("003", "ccc", "20", "jk1806");
stuArray[3] = new Student("004", "ddd", "18", "jk1806");
stuArray[4] = new Student("005", "eee", "21", "jk1806");
stuArray[5] = new Student("006", "fff", "19", "jk1806");
stuArray[6] = new Student("007", "ggg", "20", "jk1806");
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("stu.dat"));
os.writeObject(stuArray);
ObjectInputStream is = new ObjectInputStream(new FileInputStream("stu.dat"));
Student[] stu = (Student[])is.readObject();//强制类型转换
for(int i=0;i<stu.length;i++){
System.out.println(stu[i]);
}
is.close();
os.close();
}
}
将读取到的内容进行打印
注意:虽然从文本中读取到并打印出来的内容与写入文本时的内容一致,但是文本中的内容确是乱码的,原因是ObjectOutputStream.writeObject()的作用是把一个实例的对象以文件的形式保存到磁盘上,这个过程就叫Java对象的持久化。而这个文件是以二进制的形式编写的,当你用文本编辑器将它打开,这些二进制代码与某个字符集映射之后,显示出来的东西就成了乱码。
这个问题目前还没有解决,若有哪位大佬得以解决,希望可以在评论区说明一下。
本文地址:https://blog.csdn.net/weixin_43406519/article/details/110194115