现在我必须读取/写入二进制文件的对象数组。我有代码,但由于某种原因我得到一个写错误(我在try catch中创建的错误)。如何解决这个问题的任何解决方案都值得赞赏感谢。
public class Trivia {
private String question;
private String answer;
private int points;
public Trivia() {
question = " ";
answer = " ";
points = 0;
}
public String getQuestion() {
return question;
}
public String getAnswer() {
return answer;
}
public int getPoints() {
return points;
}
public void setQuestion(String q) {
question = q;
}
public void setAnswer(String a) {
answer = a;
}
public void setPoints(int p) {
points = p;
}
}
import java.io.*;
import java.util.*;
public class Driver {
public static void main(String[] args) {
String fileName = "trivia.dat";
Trivia[] t = new Trivia[5];
for (int i = 0; i < 5; i++) {
t[i] = new Trivia();
}
t[0].setQuestion("How many states are in the US?");
t[0].setAnswer("50");
t[0].setPoints(1);
t[1].setQuestion("What is the capital of Michigan?");
t[1].setAnswer("Lansing");
t[1].setPoints(1);
t[2].setQuestion("How many senators come from each state?");
t[2].setAnswer("2");
t[2].setPoints(2);
t[3].setQuestion("What is the largest state?");
t[3].setAnswer("Alaska");
t[3].setPoints(2);
t[4].setQuestion("Who was the thrid president?");
t[4].setAnswer("Thomas Jefferson");
t[4].setPoints(3);
ObjectOutputStream outputStream = null;
try{
outputStream = new ObjectOutputStream(new FileOutputStream("trivia.dat"));
}catch(IOException e){
System.out.println("Could not open file");
System.exit(0);
}
try{
outputStream.writeObject(t);
outputStream.close();
}catch(IOException e){
System.out.println("Writing error");
System.exit(0);
}
ObjectInputStream inputStream = null;
try{
inputStream = new ObjectInputStream(new FileInputStream("trivia.dat"));
}catch(IOException e){
System.out.println("File not found.");
System.exit(0);
}
Trivia[] test = null;
try{
test = (Trivia[])inputStream.readObject();
}catch(Exception e){
System.out.println("Reading error");
System.exit(0);
}
}
}
答案 0 :(得分:2)
您的Trivia
课程必须实施Serializable
界面才允许使用ObjectInputStream
进行编写。
答案 1 :(得分:0)
始终在catch子句中执行printStackTrace()以了解正在进行的操作。
您可能已经了解自己的Trivia课程没有实现java.io.Serializable
。