首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ObjectOutputStream人类可读的

ObjectOutputStream人类可读的
EN

Stack Overflow用户
提问于 2015-08-22 04:12:12
回答 3查看 617关注 0票数 3

我正在尝试将一个ArrayList读写到一个文件中,并且目前正在使用ObjectOutputStream对该文件进行写入。

代码语言:javascript
复制
fout = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fout);

oos.writeObject(arraylist);
fout.close();

arraylist变量是对象的ArrayList。此方法工作良好,但它以非人类可读的格式打印到文件。

是否有任何方法实现相同的功能(相对容易),以便以人类可读的方式将对象写入文件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-22 04:20:29

我认为您需要做的是使用PrintWriter,每次循环遍历数组列表打印到新文件。尝试:

代码语言:javascript
复制
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...>); 
}

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2015-08-22 04:18:59

您可以使用Json表示,这是人类可读的。

例如,使用Jackson:

代码语言:javascript
复制
ObjectWriter ow = new ObjectMapper().writer();
ow.writeValue(fout, arraylist);

读一读:

代码语言:javascript
复制
List<E> myObjects = new ObjectMapper().readValue(inputStream, 
                      new TypeReference<List<E>>(){});
票数 4
EN

Stack Overflow用户

发布于 2015-08-22 04:16:58

由于您使用的是ObjectOutputStream,所以它会将该数据的二进制序列化版本写入文件,这是非人类可读的。但是,您可以使用BufferedWriter执行相同的操作。

代码语言:javascript
复制
          //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");
            }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32152221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档