我正在尝试将名为ArrayList
的{{1}}写入文件。它可以工作,但不幸的是它只是将符号写入文件而不是我的实际输入。
以下是我的代码:
Clients
如何让它发挥作用?
答案 0 :(得分:2)
您所做的是将Java对象序列化到具有ObjectOutputStream
的文件。这意味着,Java会将您的对象Clients
转换为特定的表示形式,该表示形式涵盖您的对象具有的所有状态,例如成员变量。这种表示不是人类可读的,它是一种二进制格式,它比文本格式更有效,更适合于类和Java环境。查看here了解更多信息。
您可以使用FileWriter
,BufferedWriter
或PrintWriter
来使用多种write[...](...)
方法将文本写入文件。在这种情况下,您必须将每个变量编写为String
等,而不是整个类。 Here你可以找到一个例子。
对于整个对象执行与ObjectOutputStream
相同的另一个选项,但是以完全可自定义的方式和人类可读的形式使用Java Architecture for XML Binding (JAXB),但这需要一些阅读。还有其他用于JSON和其他格式的对象序列化库。
答案 1 :(得分:1)
为什么当我运行这个java程序时它会创建文本文件,但它会输出符号而不是我的输入?
因为它不是文本文件。它是根据Java序列化协议编写的序列化数据,因为您使用的是ObjectOutputStream.writeObject()
。
这也意味着CustomerLists.txt
不适合此文件。
如果您需要文字,请使用PrintWriter
或BufferedWriter
。