繁体   English   中英

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

[英]Line Break in an ObjectOutputStream/ObjectInputStream in Java?

我编写了一个简单的程序来将对象(例如书籍,杂志等)序列化和反序列化为文件,并且使用了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
            }
        }
    }

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

out.write('\n');

就是说,对象序列化格式并非旨在人类可读。 如果您想要人类可读的输出,建议您使用JSON。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM