我正在尝试将对象打印到文件中。 然后我想将它们导回到我的程序中。 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从Map获取信息的不同方法。 ObjectOutputStream是否有原因打印出我没想过的奇怪字符?整个文件几乎不可能阅读。谢谢!
聚苯乙烯。一些奇怪的印刷品,不知道它是否有帮助。
¬ísrCustomerDìUðkJ personalIdNumLnametLjava /郎/字符串; xpthellosr SavingAccountUÞÀÀ;&GT; ZfreeWithdrawDwithdrawalInterestRateLaccountTypeq〜xrAccount E =UáÐI accountNumberDbalanceDinterestRateLaccountTypeq~L transListtLjava / util / List;xpé?záG®{tsrjava.util.ArrayListxÒÇaIsizexpw x?záG®{tSaving Accountq~sr CreditAccountÝ * 5&amp;VcLaccountTypeq~xq~ê?záG®{q~sq〜w xt信用账户
答案 0 :(得分: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;
}
你有一个可以使用的物体。