从文件中读取对象 - Java

时间:2015-03-22 12:53:20

标签: java

所以我得到了代码:

 @Override
    public String toString()
    {

    return "Numer: "+this.arg1 +" Imie: "+this.arg2 +" Nazwisko: "+this.arg3 +" nr Telefonu: "+this.arg4;

}

将obj保存到文件:

public static boolean addObject(Object object) throws IOException
{
        PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(nazwaBazy, true)));
        pw.println(object.toString());
        pw.close();
        return true; 
}

创建对象:

static void dodajKontakt(String imie, String nazwisko, String nrtelefonu)
{
    listaOsob.add(new Dane(imie, nazwisko, nrtelefonu, licznik));
    licznik = licznik+1;
}

最后从文件中读取并保存到对象...

public static boolean wczytajBaze(Object object)抛出IOException         {

            BufferedReader br = new BufferedReader(new FileReader(nazwaBazy));
            boolean IsGood = false;

                Path wiki_path = Paths.get(nazwaBazy);
                Charset charset = Charset.forName("ISO-8859-1");


               try (BufferedReader reader = new BufferedReader(new FileReader(nazwaBazy))) {
                    while (true) {
                        String line = reader.readLine();

                        if (line == null) {
                           break;
                        }
                    System.out.println(line);

                    listaOsob.add(new Dane(Dane.getImie(), Dane.getNazwisko(), Dane.getnrTelefonu(), Dane.getlicznik()));
                    }
                }

问题在于

listaOsob.add(new Dane(Dane.getImie(), Dane.getNazwisko(), Dane.getnrTelefonu(), Dane.getlicznik())); 

从阅读文件和保存到对象不起作用...我知道我必须在这上面添加toString,因为它是Serializabled,但我仍然不知道该怎么做...

文件数据库的示例内容:

Numer: 1 Imie: Troll Nazwisko: Aaa nr Telefonu: 600600600
Numer: 2 Imie: Troll2 Nazwisko: Bbb nr Telefonu: 700700700
Numer: 3 Imie: Troll3 Nazwisko: Ccc nr Telefonu: 800800800
Numer: 4 Imie: Troll4 Nazwisko: Ddd nr Telefonu: 900900900
Numer: 5 Imie: Troll5 Nazwisko: Eee nr Telefonu: 101010101
Numer: 6 Imie: Troll6 Nazwisko: Fff nr Telefonu: 010101010

每次启动程序时,我都需要将它保存到Object(我的对象的arraylist)中。

1 个答案:

答案 0 :(得分:2)

而不是使用Reader / Writer,序列化对象使用ObjectInput / OutputStream。尝试像

这样的东西
     FileOutputStream out = new FileOutputStream("test.ser");
     ObjectOutputStream oout = new ObjectOutputStream(out);
     oout.writeObject(object);

与阅读对象类似,尝试类似

的内容
     // create an ObjectInputStream for the file we created before
     ObjectInputStream ois =
             new ObjectInputStream(new FileInputStream("test.ser"));
     System.out.println("" + (Object) ois.readObject());

确保你的Dane Class是Serializableable。而不是使用Object,将Dane传递给您的方法并使用它。