如何将文件中的多个对象读取到arraylist?

时间:2017-04-12 12:43:59

标签: java file oop object arraylist

我试图从文件中读取所有对象并将其保存到数组中。但是,我得到一个StreamCorruptedException。另一个问题:它是无关的:每当我查看存储在其中的对象的文件时,它就是对象语言。有可能把它变成人类可读的语言吗?

public void generateLibReport() throws IOException, FileNotFoundException, ClassNotFoundException{

    ObjectInputStream ois = new ObjectInputStream(new 
    FileInputStream("LibrarianFile.txt"));
    boolean check = true;
    ArrayList<Librarian> array = new ArrayList();
    while(check){
        try{
            Librarian librarian = (Librarian)ois.readObject();
            array.add((Librarian)librarian);
        }
        catch(EOFException e){
            for(Librarian l:array){
            System.out.println(l);
            }
            check = false;
            ois.close();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果您想使用可读语言,请尝试以JSON格式保存对象。

例如,使用Gson库。

void save(List<Librarian> libs) {
    String json = gson.toJson(libs);
    //save json text in simple text file
}

List<Librarian> load(String filename) {
    //read text file to json variable
    String json = ...;
    return gson.fromJson(json, new TypeToken<List<Librarian>>(){});
}

这样可以解决这两个问题。