从arraylist对象写入时,文件中的Unkwon对象

时间:2015-10-29 02:54:49

标签: java arraylist

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

2 个答案:

答案 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)

它只是正确的。在上面的代码中,您尝试序列化列表对象。虽然列表对象将包含数字,但是当您在文件中序列化该特定对象时,它会将其放入一些不可读的二进制形式。所以不要担心,当你反序列化它时,你将得到你之前存储的完全相同的对象!!!

希望这个答案能帮到你!!