[英]ObjectOutputStream human-readable
我正在尝试读取和写入一个ArrayList到一个文件,并且当前使用ObjectOutputStream写入该文件。
fout = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(arraylist);
fout.close();
arraylist
变量是一个ojects的ArrayList。 此方法可以正常工作,但它以非人类可读的格式打印到文件中。
有没有办法实现相同的功能(相对容易),以便以人类可读的方式将对象写入文件?
您可以使用人类可读的Json表示。
例如使用杰克逊:
ObjectWriter ow = new ObjectMapper().writer();
ow.writeValue(fout, arraylist);
回读:
List<E> myObjects = new ObjectMapper().readValue(inputStream,
new TypeReference<List<E>>(){});
我认为您需要做的是使用PrintWriter,并且每次都将数组列表打印循环到新文件。 尝试:
PrintWriter writer = new PrintWriter(outputFile);
for (int i=0;i<<name>.length;i++){
writer.println(<ArrayListName>[i].getString(), + "\t" + <ArrayListName>[i].getFirstInt() + "\t" + <name>.[i].getSecondInt +<etc...>);
}
希望这可以帮助!
由于您正在使用ObjectOutputStream
,因此它将该数据的二进制序列化版本写入文件,该文件是非人类可读的。 但是,您可以使用BufferedWriter
执行相同操作。
//Sample code
try{
ArrayList<YourObject> yourObjectList;
BufferedWriter writer = new BufferedWriter(new FileWriter("C:/yourPath/fileName.txt"));
for (YourObject oneObjAtATime : yourObjectList) {
writer.write(oneObjAtATime.toString());
}
}catch(Exception e){
throw new Exception("error");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.