gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 13:07:25 24 4
gpt4 key购买 nike

我编写了一个简单的程序来将书籍、杂志等对象序列化和反序列化到文件中,并且使用了 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[]) 方法将任意数据注入(inject)到 ObjectOutputStream 中。只需确保读取流的代码知道如何处理它即可。特别是换行符可以写成

out.write('\n');

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

关于java - Java 中的 ObjectOutputStream/ObjectInputStream 中的换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23166793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com