我正在尝试将一个ArrayList读写到一个文件中,并且目前正在使用ObjectOutputStream对该文件进行写入。
fout = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(arraylist);
fout.close();arraylist变量是对象的ArrayList。此方法工作良好,但它以非人类可读的格式打印到文件。
是否有任何方法实现相同的功能(相对容易),以便以人类可读的方式将对象写入文件?
发布于 2015-08-22 04:20:29
我认为您需要做的是使用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...>);
}希望这能有所帮助!
发布于 2015-08-22 04:18:59
您可以使用Json表示,这是人类可读的。
例如,使用Jackson:
ObjectWriter ow = new ObjectMapper().writer();
ow.writeValue(fout, arraylist);读一读:
List<E> myObjects = new ObjectMapper().readValue(inputStream,
new TypeReference<List<E>>(){});发布于 2015-08-22 04:16:58
由于您使用的是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");
}https://stackoverflow.com/questions/32152221
复制相似问题