try {
File outFile = new File("C:/Users/USER/Desktop/Saumil/Saumil/output.datat");
FileOutputStream fos = new FileOutputStream(outFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(list); // write list to ObjectOutputStream
oos.close();
fos.close();
} catch(Exception ex) {
ex.printStackTrace();
}
上面的代码给出了如下所示的输出,而我的输入文件只有整数。 任何人都可以帮我解决这个问题
¬ísrjava.util.ArrayListxÒ™ÇaIsizexp #w #t
3 2345678910t 11 12345789t 18 1345678910t
39 235678910t
40 123678910t 42 12345678910t
48 123567910t 53 12345678910t 318
答案 0 :(得分:1)
writeObject()
生成的输出旨在由readObject()
的{{1}}方法解释,而不是由人类解释。如果你想要一个人类可读的文件,请尝试这样的事情:
ObjectInputStream
这会将FileWriter fw = new FileWriter(outFile);
BufferedWriter out = new BufferedWriter(fw);
for (int i=0; i<list.size(); i++) {
out.write(list.get(i));
out.newLine();
}
的每个元素的值写入文件,而不是以一种人类不可读的方式将list
本身写入文件。
答案 1 :(得分:0)
它只是正确的。在上面的代码中,您尝试序列化列表对象。虽然列表对象将包含数字,但是当您在文件中序列化该特定对象时,它会将其放入一些不可读的二进制形式。所以不要担心,当你反序列化它时,你将得到你之前存储的完全相同的对象!!!
希望这个答案能帮到你!!