Java中的ObjectOutputStream / ObjectInputStream中的换行符?

时间:2014-04-19 06:36:22

标签: java objectinputstream objectoutputstream

我编写了一个简单的程序来序列化和反序列化书籍,杂志等对象到文件中,我使用了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
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以使用write(int)和write(byte [])方法将任意数据注入ObjectOutputStream。只需确保读取流的代码知道如何处理它。特别是换行符可以用

写出来
out.write('\n');

也就是说,对象序列化格式并非设计为人类可读的。如果你想要人类可读的输出,我建议使用JSON。