繁体   English   中英

ObjectOutputStream是人类可读的

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM