2013-10-31 270 views
0

你好,有人可以帮助我在Java文件中写入和读取对象?从文件中读取/写入对象

这是我使用的代码,这让我这个例外:java.io.NotSerializableException 这里是我的代码使用方法:

public void zapisDat() { 
    sez = new SeznamLodi(seznamLodiPC, seznamLodiUser, seznamLodiZasahuHrac, seznamLodiZasahuPC); 
    try { 
     ObjectOutput out = new ObjectOutputStream(
       new FileOutputStream("mujseznam.dat")); 
     out.writeObject(sez); 
     out.close();    // a je to. Jednoduché, že? 
    } catch (IOException e) { 
     System.out.println("Chyba při zápisu souboru : " + e); 
    } 
} 

public void nacteniDat() { 
    try { 
     // Načtení ze souboru 
     File file = new File("mujseznam.dat"); 
     try (ObjectInputStream in = new ObjectInputStream(
       new FileInputStream(file))) { 
      sez = (SeznamLodi) in.readObject(); 
     } 
    } catch (ClassNotFoundException e) { 
     System.out.println("Nemohu najít definici třídy: " + e); 
    } catch (IOException e) { 
     System.out.println("Chyba při čtení souboru : " + e); 
    } 
} 

Thaks任何帮助

+0

你能告诉我们,你的类,它的字段是序列化? –

回答

0

为了写ObjectOututStream对象必须正确支持序列化。

阅读serialization tutorial并使您的类SeznamLodi符合要求。

0

正如错误所说,类(对于对象sez)没有实现Serializable接口。你可以参考java papers知道它是如何工作的。

0

对象应该实现Serializable接口写入文件。具体实现java.io.serializable。

import java.io.serializable 

class SerializationBox implements Serializable { 
.... 
0

产生这个类可序列化

class SeznamLodi implements java.io.Serializeable 
0

如果SeznamLodi是你自己的,让Serializable通过它

public class SeznamLodi implements Serializable { 

    } 

阅读Serialization#Java

1

要使您的对象可序列化,您必须实现Serializable接口,以便指示JVM序列化您自己的实现Serializable接口的类的对象。

您的代码必须实现Serializable接口的样子,

public class <class_name> implements Serializable { }