0

我正在尝试将对象打印到文件中。然后我想将它们导入回我的程序。ObjectOutputStream 不工作,我错过了什么?(尝试,捕捉在这里不可见,但他们正在做他们的工作)

Map< Account, Customer> customerInfo = new HashMap< Account, Customer>();

File bankFile = new File("Bank.txt");
                FileOutputStream fOut = new FileOutputStream( bankFile);
                ObjectOutputStream objOut = new ObjectOutputStream(fOut);

                for(Map.Entry<Account, Customer> e : bank.customerInfo.entrySet())
                    {
                        objOut.writeObject(e.getValue());
                        objOut.writeObject(e.getKey());
                    }

                objOut.flush();
                objOut.close();
                fOut.close();

我的问题是 ObjectOutputStream 无法正常工作,它会打印一些奇怪的代码。我已经使用其他方法打印到文件并且它们工作得很好。

我试过打印到不同的文件扩展名,

我尝试更改文件和 eclipse 的编码。

我尝试了不同的方法来使用 ObjectOutputStream 从地图中获取信息。ObjectOutputStream 打印我没有想到的奇怪字符是否有原因?整个文件几乎无法阅读。谢谢!

附言。一些奇怪的打印,不知道它是否有帮助。

¬ísrCustomerDìUðkJ personalIdNumLnametLjava/lang/String;xpthellosr SavingAccountUÞÀÀ;>ZfreeWithdrawDwithdrawalInterestRateLaccountTypeq~xrAccount é=UáÐI accountNumberDbalanceDinterestRateLaccountTypeq~L transListtLjava/util/List;xpé?záG®{tsrjava.util.ArrayListxÒÇaIsizexpw x?záG®{tSaving Accountq~sr CreditAccountÝ *5&VcLaccountTypeq~xq ~ê?záG®{q~sq~ w xtCredit Account

4

1 回答 1

2

这真的很简单。首先,创建一个实现Serializable. Serializable是一个标记接口,所以你不需要为它实现任何方法:

public class Shoe implements Serializable  { ... }


注意:如果Shoe其中有其他类,例如Heel,或Buckle,这些类也需要实现Serializable接口。


下一步是使用ObjectOutputStream.

FileOutputStream out = new FileOutputStream("myfile.txt");
// Create the stream to the file you want to write too.
ObjectOutputStream objOut = new ObjectOutputStream(out);
// Use the FileOutputStream as the constructor argument for your object.

objOut.writeObject(new Shoe("Prada"));
// Write your object to the output stream.
objOut.close();
// MAKE SURE YOU CLOSE to avoid memory leaks, and make sure it actually writes.

你有它。序列化的对象被写入 txt 文件。现在阅读它,这只是使用ObjectInputStream.

ObjectInputStream objIn = new ObjectInputStream(new FileInputStream("myfile.txt");
Object obj = objIn.readObject();
if(obj instanceof Shoe)
{
    Shoe shoe = (Shoe)obj;
}

你有一个可以使用的对象。

于 2013-09-05T10:23:37.870 回答