-1
我有问题。现在我序列化二进制文件中的许多对象名为student.bin反序列化java中的很多对象?
在二进制文件中添加对象数据后,现在我想要检索写入二进制文件中的所有数据。
但它只检索第一个对象数据。
问题是:如何获取文件的所有内容?
这里是我的代码:
import java.util.Scanner;
import java.io.*;
import java.io.Serializable;
public class Binary implements Serializable{
public int id;
public String name;
public int grade;
public static void main(String argv[]) throws IOException, ClassNotFoundException
{
Binary b = new Binary();
Scanner sc = new Scanner(System.in);
System.out.printf("Enter student id: ");
b.id = sc.nextInt();
System.out.printf("Enter student name: ");
b.name = sc.next();
System.out.printf("Enter student grade: ");
b.grade = sc.nextInt();
ObjectOutputStream bin = new ObjectOutputStream(new FileOutputStream("C:\\Users\\فاطمة\\Downloads\\student.bin",true));
bin.writeObject(b);
bin.close();
ObjectInputStream in = new ObjectInputStream(new FileInputStream("C:\\Users\\فاطمة\\Downloads\\student.bin"));
Binary b2 = (Binary)in.readObject();
System.out.println("Student ID: " + b2.id);
System.out.println("Student Name: " + b2.name);
System.out.println("Student Grade: " + b2.grade);
in.close();
}
}
谢谢你的回答,但如何打印元素? –
你没有回答完整的问题。我想分别打印所有的对象数据...例如,如果我有像这样的对象数据(1,“John”,50),所以它应该打印,如我在我的代码上面写的输出声明。每个对象数据都必须单独打印。 –
输入流没有'hasNext()'方法,并且您不能在同一个底层流上同时使用'Scanner'和'ObjectInputStream'。你还没有尝试过。 – EJP