Java 是否可以持久存储样式化文本?

Java 是否可以持久存储样式化文本?,java,swing,serialization,data-persistence,Java,Swing,Serialization,Data Persistence,所以我尝试使用序列化一些对象。它们编码得很好,但是当我查看数据时,它没有对任何实际数据进行编码,它只给出类文件。我在互联网上看到很多人在这方面有困难,但没有有用的解决办法。我看到的最佳答案是“DefaultStyledDocument不是一个合适的bean,所以它不会工作。” 那么,我是否可以序列化DefaultStyledDocuments,而不必处理版本之间的问题?二进制和文本都可以接受 下面是我想做的一些示例代码: DefaultStyledDocument content = new D

所以我尝试使用序列化一些对象。它们编码得很好,但是当我查看数据时,它没有对任何实际数据进行编码,它只给出类文件。我在互联网上看到很多人在这方面有困难,但没有有用的解决办法。我看到的最佳答案是“DefaultStyledDocument不是一个合适的bean,所以它不会工作。”

那么,我是否可以序列化DefaultStyledDocuments,而不必处理版本之间的问题?二进制和文本都可以接受

下面是我想做的一些示例代码:

DefaultStyledDocument content = new DefaultStyledDocument();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder(stream);
encoder.writeObject(content);
encoder.close();
stream.toString(); //This is the result of the encoding, which should be able to be decoded to result in the original DefaultStyledDocument

我真的不在乎是否使用XMLEncoder或其他方法,它只需要工作。

没有必要使用XMLEncoder对文档进行编码。EditorKits是Swing文本API的一部分,可以为您完成这项工作。基级类EditorKit同时具有
read()
write()
方法。然后,这些方法通过各种子编辑器进行扩展,以允许读取和写入文档。大多数文档都有自己的EditorKits,允许程序员读或写文档

然而,StyledDitorKit(DefaultStyledDocument的“自己的”EditorKit)不允许读取或写入。您需要使用RTFEditorKit,它支持读写。然而,Swing的内置RTFEditorKit并不能很好地工作。所以有人设计了一个免费的“高级”编辑器工具包。要使用AdvancedRTFEditorKit编写DefaultStyledDocument,请使用以下代码(变量
content
是DefaultStyledDocument)

使用RTFEditorKit的
read()
方法,可以使用类似的过程来读取RTFDocuments

AdvancedRTFEditorKit editor = new AdvancedRTFEditorKit();
Writer writer = new StringWriter();
editor.write(writer, content, 0, content.getLength());
writer.close();
String RTFText = writer.toString();