因此,我试图使用DefaultStyledDocument序列化一些XMLEncoder对象。它们的编码很好,但是当我查看数据时,它并没有编码任何实际的数据,它只是给出了类文件。我在网上看过,发现很多人在这方面有困难,但没有任何有用的解决方案。我看到的最好的答案是:"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或其他方法,它只是需要工作。
发布于 2015-03-28 05:41:19
没有必要使用XMLEncoder对文档进行编码。EditorKits是Swing Text的一部分,它为您完成了这项工作。基级类EditorKit有一个read()和write()方法。然后,各种子EditorKits对这些方法进行扩展,以允许读取和写入文档。大多数文档都有自己的EditorKits,它允许程序员读取或写入文档。
然而,StyledEditorKit (DefaultStyledDocument的“自己的”EditorKit)不允许读写。您需要使用RTFEditorKit,它确实支持读写。然而,Swing的内置RTFEditorKit并不能很好地工作。因此,有人设计了一个免费的“高级”编辑器工具包提供的这里。为了用DefaultStyledDocument编写AdvancedRTFEditorKit,使用以下代码(变量content是DefaultStyledDocument)。
AdvancedRTFEditorKit editor = new AdvancedRTFEditorKit();
Writer writer = new StringWriter();
editor.write(writer, content, 0, content.getLength());
writer.close();
String RTFText = writer.toString();使用RTFEditorKit的RTFDocuments方法读取read()也可以使用类似的过程。
https://stackoverflow.com/questions/29196207
复制相似问题