gpt4 book ai didi

java - 读取从 arraylist 创建的文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:09 25 4
gpt4 key购买 nike

我编写了一段代码将 ArrayList 保存到文件中,但我需要再次读取该文件,稍后重用同一数组,但该文件的写入方式很奇怪,有什么方法可以配置输出文件的写入方式吗?抱歉,如果问题很愚蠢,这是我的第一个程序。

保存ArrayList的代码:

try {
FileOutputStream fileOut = new FileOutputStream(
"src//ServerInfo.txt");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(dataServer);
out.close();
fileOut.close();
}

catch (IOException i) {
i.printStackTrace();
}

读取文件的代码:

try {
File file = new File("src//ServerInfo.txt");
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);

try {
String s;
while ((s = br.readLine()) != null) {
dataServer.add(s);
}
}
finally {
br.close();
}
}

catch (IOException ex) {
ex.printStackTrace();
}

更改读取或写入代码都可以,我只需要一种方法来读取我编写的文件。

输出文件如下所示:

¬í sr java.util.ArrayListxÒ™Ça I sizexp   w   t admint admint booklet@booklet.comt 
Administratorx

它应该是什么样子:(这也是我在程序执行之前第一次编写它的方式)

admin
admin
booklet@booklet.com
Administrator

最佳答案

虽然您的读取代码对于您想要的格式来说是合理的,但您正在以不同的格式写入文件。正如 Dan Temple 所指出的,对象流是二进制流,是 Java 默认序列化机制的一部分。除了对象的内容之外,序列化对象还将包括类类型和序列版本等内容。使用字符串以外的对象会使输出更加复杂。

如果您想要列表的纯文本表示形式,请执行以下操作:

public void save(String fileName) throws FileNotFoundException {
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
for (String element : dataServer)
pw.println(element);
pw.close();
}

这是对Java - How Can I Write My ArrayList to a file, and Read (load) that file to the original ArrayList?的答案的几乎逐字复制和粘贴。 ,正如 vefthym 所提到的。您可能想向其中添加您自己的异常处理,就像您对阅读代码所做的那样。

关于java - 读取从 arraylist 创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26786284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com