Разрыв строки в ObjectOutputStream/ObjectInputStream в Java?

Я написал простую программу для сериализации и десериализации таких объектов, как книги, журналы и т. д., в файл, и использовал классы ObjectInputStream/ObjectOutputStream библиотеки утилит Java.

Все работает, но я хотел бы добавить несколько разрывов строк после каждого объекта, чтобы он был более читаемым при открытии файла.

Есть ли эквивалент "\n" при использовании строк в классах ObjectInputStream/ObjectOutputStream?

PS: у меня также есть версия, в которой я сериализую и десериализую с помощью XStream, используя данные xml. Есть ли у кого-нибудь идея, если есть возможность, сделать такой перерыв с помощью 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
            }
        }
    }

person rikojir    schedule 19.04.2014    source источник


Ответы (1)


Вы можете вводить произвольные данные в ObjectOutputStream, используя методы write(int) и write(byte[]). Просто убедитесь, что код, читающий поток, знает, как с ним обращаться. В частности, разрыв строки можно записать с помощью

out.write('\n');

Тем не менее, формат сериализации объектов не предназначен для чтения человеком. Если вам нужен удобочитаемый вывод, я предлагаю использовать JSON.

person Joni    schedule 19.04.2014