簡體   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