是否可以持久存储样式文本?
Is it possible to store styled text persistently?
所以我试图序列化一些 DefaultStyledDocument objects using XMLEncoder。它们编码得很好,但是当我查看数据时,它没有对任何实际数据进行编码,它只提供 class 文件。我在网上看了看,很多人都遇到了这个问题,但是没有有用的解决方案。我看到的最佳答案是 "DefaultStyledDocument isn't a proper bean, so it won't work."
那么,有没有办法可以序列化 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 Text API 的一部分,可以为您完成这项工作。基本级别 class,EditorKit,同时具有 read()
和 write()
方法。然后,这些方法被各种子 EditorKit 扩展,以允许读取和写入文档。大多数文档都有自己的 EditorKit,它允许程序员读取或编写文档。
但是,StyledEditorKit(DefaultStyledDocument 的 "own"EditorKit)不允许读取或写入。您需要使用 RTFEditorKit,它支持读写。但是,Swing 的内置 RTFEditorKit 不能很好地工作。因此有人设计了一个免费 "Advanced" 可用的编辑器工具包 here。为了使用 AdvancedRTFEditorKit 编写 DefaultStyledDocument,使用以下代码(变量 content
是 DefaultStyledDocument)。
AdvancedRTFEditorKit editor = new AdvancedRTFEditorKit();
Writer writer = new StringWriter();
editor.write(writer, content, 0, content.getLength());
writer.close();
String RTFText = writer.toString();
类似的过程可用于通过 RTFEditorKit 的 read()
方法读取 RTFDocuments。
所以我试图序列化一些 DefaultStyledDocument objects using XMLEncoder。它们编码得很好,但是当我查看数据时,它没有对任何实际数据进行编码,它只提供 class 文件。我在网上看了看,很多人都遇到了这个问题,但是没有有用的解决方案。我看到的最佳答案是 "DefaultStyledDocument isn't a proper bean, so it won't work."
那么,有没有办法可以序列化 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 Text API 的一部分,可以为您完成这项工作。基本级别 class,EditorKit,同时具有 read()
和 write()
方法。然后,这些方法被各种子 EditorKit 扩展,以允许读取和写入文档。大多数文档都有自己的 EditorKit,它允许程序员读取或编写文档。
但是,StyledEditorKit(DefaultStyledDocument 的 "own"EditorKit)不允许读取或写入。您需要使用 RTFEditorKit,它支持读写。但是,Swing 的内置 RTFEditorKit 不能很好地工作。因此有人设计了一个免费 "Advanced" 可用的编辑器工具包 here。为了使用 AdvancedRTFEditorKit 编写 DefaultStyledDocument,使用以下代码(变量 content
是 DefaultStyledDocument)。
AdvancedRTFEditorKit editor = new AdvancedRTFEditorKit();
Writer writer = new StringWriter();
editor.write(writer, content, 0, content.getLength());
writer.close();
String RTFText = writer.toString();
类似的过程可用于通过 RTFEditorKit 的 read()
方法读取 RTFDocuments。