【问题标题】:can i save an array of objects in a file in a human readable way?我可以以人类可读的方式将一组对象保存在文件中吗?
【发布时间】:2012-12-15 16:14:27
【问题描述】:

我想创建一个对象数组,每个对象由一些字符串组成,我想以人类可读的方式将这些对象保存在一个文件中,有没有一种方法可以一次写入和读取整个数组,或者我有逐个元素地保存它们??

【问题讨论】:

标签: java arrays file


【解决方案1】:

您所说的人类可读方式到底是什么意思?如果您觉得 json 数据对您来说足够好,请序列化数组并将其打印到文件中。

理想情况下,逐个元素会更好,因为每个对象都是独立的,因为我看不到为所有这些对象应用通用逻辑的方法。

【讨论】:

  • 我的意思是有一个对象数组,每个对象的格式类似于“firstName,Lastname,...”,我想保存整个数组并一次调用整个数组,当我打开文件时,我希望看到这种格式“firstName,Lastname,...”,所以序列化与此无关。抱歉打扰了
  • 连载和这个兄弟有关系。如果您想将对象转换为字符串并传递它,则可以使用它。由于您的数组包含用户定义的对象,因此您应该说出应该存储的确切内容。因此,除了逐个元素地做之外,我看不到其他方法。顺便问一下,这有什么问题?
  • 电话簿 ob= new PhoneBook("mmmm","nnn","010");尝试{ FileOutputStream file=new FileOutputStream("contacts.ser"); ObjectOutputStream out = new ObjectOutputStream(file); out.writeObject(ob); out.close();文件.close(); }
【解决方案2】:

听起来您要问的主要问题是“我可以一次写...整个数组吗”。

当然:

String[] things = { "ABC", "XYZ" };
System.out.println(Arrays.toString(things));

我相信您会问这个问题,因为当您尝试这样做时:

System.out.println(things)

你会得到类似的东西:

[Ljava.lang.String;@35a8767

您在这里看到的是数组引用本身。你想要的是一个像上面这样漂亮的印刷版。这些漂亮的输出来自toString 函数的自定义实现,该函数存在于Java 中的所有对象上,来自Object 对象本身。由于数组是“原始”而不是对象,因此它没有toString 函数。因此,Arrays 对象为此提供了一个实用的静态toString 函数。

另一种解决方案是使用List 而不是数组。 List 是一个对象,有一个漂亮的 toString 函数。

List<String> thingList = Arrays.asList(things);
System.out.println(thingList);

现在,如果你把它写到一个文件中并想读回它(就像你提到的那样),你将进入解析的世界。如果您打算将对象写入文件并将其读回,则绝对应该研究现有的工具来将对象序列化和反序列化为 XML 或 JSON(它们在某种程度上是人类可读的序列化格式)。

【讨论】:

    猜你喜欢
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多