是否可以以人类可读的格式将对象发送到文件中



我正在为我的高级Java类做一个项目,任务说他想要我们将对象发送到文件,这很容易,但他也希望文件是可读的和可编辑的。我3天前给他发了一封电子邮件,他一直没有回复,所以由于项目还有三天就要到期,我有点进退两难。

那么,你们这些聪明的程序员中有谁能告诉我一个明显被遗漏的秘密吗。

如何将对象发送到一个读起来像英语的文件中?

我希望能够阅读和编写待办事项文件我看到我们的应用程序看起来像:

  1. 当它第一次启动时,程序会询问用户是否有包含待办事项的文件。如果是,用户将命名文件程序将读入并继续
  2. 当用户决定退出时,程序将提示用户-询问是否应将待办事项保存到文件中-如果是,则用户将命名文件,程序将在这样一种方式,它可以再次读取它们

我希望这些文件是可读的(和可编辑的)。没有二进制数据。不算在内。我给你的建议是在某个地方找到一种方法看起来像:

public ToDoItem getToDoItem(FileInputStream fis) {
   // ...
}

public void writeToDoItem(FileOutputStream fos) {
 // ...
}

想想您的序列化模型。ObjectOutputStream可能会写入字节,但有没有其他方法可以表示对象,并通过其他输出流写入可读文本?

这将取决于您拥有的对象类型。您必须根据特定类型的数据进行调整。

例如,如果您有一个对象

String title;
List<Integer> ids;

然后可以将其保存为JSON

{
   title: 'aaaa',
   ids: [ 1,2,3,4,5 ]
}

这是等效的,但比二进制ObjectOutputStream可读性高得多。

同样,这不适用于所有类型的数据。

还有一个基于XML的bean序列化,它也适用于几乎所有的数据,但我不认为它是可读的。

想想如何在纸上表示一个对象,使其可以明确地重建。您可能会列出类名,然后列出每个字段名及其当前值。如果字段是基元,则该值将只是基元值。如果它是一个引用类型,您可以使用这个过程递归地表示对象。如果它是一个数组,则会列出每个元素的值。

有各种标准的方式来格式化这样的表示(XML和JSON就是其中之一)。关键是使其成为纯文本表示,使其具有可读性。

您可以尝试使用JAXB。(用于XML绑定的Java体系结构)它可以将JAXB样式的对象发送到xml文件。但是您应该首先定义一个XMLSchema文件。更多信息:http://jaxb.java.net/tutorial/

您想要的人类可读性可以是XMLJSON。我的答案如何在Java中从xsd创建对象树?

可能有助于为你提供实现你想要的目标的方法。

相关内容

最新更新