我编写了一个简单的程序来序列化和反序列化书籍,杂志等对象到文件中,我使用了Java实用程序库的ObjectInputStream / ObjectOutputStream类。
一切正常,但我想在每个对象后添加一些换行符,以便在打开文件时更具可读性。
在ObjectInputStream / ObjectOutputStream类中使用字符串时,“\ n”是否有任何兼容性?
PS:我还有一个版本,我使用xml数据对XStream进行序列化和反序列化。有没有人有想法,如果还有可能,使用XStream进行这样的休息?
OutputStream fos = null;
ObjectOutputStream o = null;
// Now serialize objects into the file
try
{
fos = new FileOutputStream("C:\\Users...");
// Initialize the ObjectOutputStream with XStream when xml_switcher is set to true
if (xml_switcher == true) {
o = xstream.createObjectOutputStream(fos);
}
// Otherwise normal serializing by creating a normal ObjectOutputStream
else {
o = new ObjectOutputStream( fos );
}
ArrayList<Printing> resultList = Access.getAllPrintings();
Iterator<Printing> it = resultList.iterator();
while (it.hasNext()) {
if (xml_switcher == true) {
o.writeObject(it.next());
// So here's my problem: I would like to have something like o.write("\n")
// using XStream
}
else {
o.writeObject(it.next().toString());
// Same here but without XStream
}
}
}
答案 0 :(得分:1)
您可以使用write(int)和write(byte [])方法将任意数据注入ObjectOutputStream。只需确保读取流的代码知道如何处理它。特别是换行符可以用
写出来out.write('\n');
也就是说,对象序列化格式并非设计为人类可读的。如果你想要人类可读的输出,我建议使用JSON。