我试图在Java中使用序列化来保存" Tweet"反对文件" tweet.ser"然后阅读文件。
这是我通过序列化保存和阅读的代码:
public class SaveRead {
public static void save(Tweet tweet) {
try (FileOutputStream fos = new FileOutputStream("tweet.ser"); ObjectOutputStream oos = new ObjectOutputStream(fos);) {
oos.writeObject(tweet);
} catch (IOException ioe) {
System.out.println("Problem saving tweet");
ioe.printStackTrace();
}
}
public static Tweet loadTweet() {
Tweet tweet = new Tweet("", "");
try (FileInputStream fis = new FileInputStream("tweet.ser"); ObjectInputStream ois = new ObjectInputStream(fis);) {
tweet = (Tweet) ois.readObject();
} catch (IOException ioe) {
System.out.println("Error reading file");
ioe.printStackTrace();
} catch (ClassNotFoundException cnfe) {
System.out.println("Error loading treets");
cnfe.printStackTrace();
}
return tweet;
}
}

这就是我创建一个Tweet对象并尝试保存和读取它的方法:
public static void main(String[] args) {
// TODO code application logic here
Tweet tweet = new Tweet("Programmer", "I can program in java.");
SaveRead.save(tweet);
Tweet reLoaded = SaveRead.loadTweet();
System.out.println(reLoaded);
}

我可以看到" tweet.ser"在项目文件夹中创建的文件,但问题是我的程序没有正确读取保存的推文。我期待重新发送的推文说"程序员","我可以在java"中编程。但我得到的只是: serialization.Tweet@232204a1
答案 0 :(得分:0)
感谢@Henrik的评论和解决方案,我需要在我的Tweet类中添加和覆盖toString()方法,以便在反序列化保存的tweet.ser文件时以我想要的格式获取输出。