Java 序列化对象列表
我对如何序列化和反序列化问题对象列表感到困惑 我有一个Survey类,它有一个名为Questions的属性,这是一个Question对象列表 我希望能够序列化调查属性以及每个问题的所有属性 不幸的是,到目前为止,我没有运气,以下是我所拥有的。谢谢你的帮助Java 序列化对象列表,java,serialization,Java,Serialization,我对如何序列化和反序列化问题对象列表感到困惑 我有一个Survey类,它有一个名为Questions的属性,这是一个Question对象列表 我希望能够序列化调查属性以及每个问题的所有属性 不幸的是,到目前为止,我没有运气,以下是我所拥有的。谢谢你的帮助 public void loadData(Boolean isSurvey) throws FileNotFoundException { System.out.println("Select a file: "); FileI
public void loadData(Boolean isSurvey) throws FileNotFoundException {
System.out.println("Select a file: ");
FileInputStream fileIn;
if (isSurvey) {
String fileName = listFiles("surveys").get(input.getIntInput(fileCount - 1));
fileIn = new FileInputStream("surveys/" + fileName);
} else {
String fileName = listFiles("tests").get(input.getIntInput(fileCount - 1));
fileIn = new FileInputStream("tests/" + fileName);
}
Question q = null;
try
{
ObjectInputStream in = new ObjectInputStream(fileIn);
q = (Question) in.readObject();
in.close();
fileIn.close();
}catch(IOException i){
i.printStackTrace();
}catch(ClassNotFoundException c) {
System.out.println("Not found");
c.printStackTrace();
}
System.out.println("Deserialized Question...");
System.out.println("prompt: " + q.prompt);
}
public void saveData(Survey survey, Test test, Boolean isSurvey, String fileName) {
try {
File surveyDir = new File("surveys");
File testDir = new File("tests");
if ((!(surveyDir.exists()) && isSurvey)) {
System.out.println("Creating Survey directory. . .");
surveyDir.mkdir();
}
if ((!(testDir.exists())) && !(isSurvey)) {
System.out.println("Creating Test directory. . .");
testDir.mkdir();
}
if (isSurvey) {
FileOutputStream fileOut = new FileOutputStream("surveys/" + fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
for (Question question : survey.questions) {
out.writeObject(survey.questions);
}
out.close();
fileOut.close();
} else {
FileOutputStream fileOut = new FileOutputStream("tests/" + fileName);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
for (Question question : test.questions) {
out.writeObject(question);
}
out.close();
fileOut.close();
}
} catch(IOException i) {
i.printStackTrace();
}
}
您是否已经用java.io.Serializable实现了要编写的对象 我注意到的另一件事是,您编写了一个集合对象
for (Question question : survey.questions) {
out.writeObject(survey.questions);
}
但你把它当作问题对象来读
for (Question question : survey.questions) {
out.writeObject(survey.questions);
}
如果您编写的对象是集合。下面是一个示例,如果它是列表集合
q = (List<Question>) in.readObject();
不幸的是,我在发布时已经实现了它。谢谢你:什么样的收集是调查。问题。您可以直接强制转换,因为集合类已实现Serializable.survey.questions是ArrayList questions=new ArrayList“No luck”不是问题描述。再试一次。的副本不完整。
q = (List<Question>) in.readObject();