为什么ObjectOutputStream把符号写入文件而不是我的输入?
为什么ObjectOutputStream把符号写入文件而不是我的输入?
这个问题已经有了答案:
我试图将我的ArrayList
,名为Clients
,写入到一个文件中。它运行正常,但不幸的是,它只是将符号写入文件,而不是我的实际输入。
下面是我的代码:
public void SaveToFile() { try { FileOutputStream fos = new FileOutputStream("CustomerLists.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(Clients); oos.close(); } catch (Exception ex) { ex.printStackTrace(); }
我该如何使其起作用?
admin 更改状态以发布 2023年5月24日
你现在做的是使用ObjectOutputStream
将Java对象序列化写入文件。这意味着Java将你的Clients
对象转换为一种特定的表示方式,其中包含了对象的所有状态,比如成员变量。这种表示形式不是面向人类的可读性,而是一种更高效、更适合类和Java环境的二进制格式。在这里可以找到更多信息。
你可以使用FileWriter
、BufferedWriter
或PrintWriter
代替ObjectOutputStream
,这些类都有多个write[...](...)
方法可用于写入文本到文件中。在这种情况下,你需要为每个变量分别写入其String
等类型,而不是整个类。在这里可以找到相关示例。
与ObjectOutputStream
执行相同操作的另一种选择是使用Java Architecture for XML Binding (JAXB),它提供了一种完全可定制的、面向人类的形式。不过这需要一些阅读。也有其他支持JSON等格式的对象序列化库可用。