2011-02-08 103 views
0

我需要将整个对象写入文件并在需要时进行检索。假设我想编写一个类“学生”的对象,它具有诸如成绩,名称,卷等等属性。而且当我想在稍后需要时访问和操作属性。你能告诉我一种方法来完成它吗?将对象写入文件

回答

4

使用ObjectOutputStream。

public class Student implements Serializable { 

} 

FileOutputStream fos = new FileOutputStream("Students.dat"); 
ObjectOutputStream oos = new ObjectOutputStream(fos); 

Student someStudent = new Student(); 

oos.writeObject(someStudent); 

oos.close(); 

像这样。

1

尝试Serialization

+0

感谢名单! <3 <3 .. – 2011-02-08 17:24:37

+0

:)不客气 – 2011-02-08 17:26:50

1

做你要找的最简单的方法是Object Serialization.

基本上,你的界面添加到您的Student类,Serializable,这将使你的那类对象传递给ObjectOutputStream。您可以使用此流将这些学生写入磁盘上的文件。之后,他们可以通过ObjectInputStream进行阅读以再次修改。

1

如果你有一个简单的JavaBeans,你可以使用java.beans.XMLEncoder中/的XMLDecoder。

另一种方法是使用JAXB。

0

这些方法可以帮助你,你的学生类必须实现serilizable, 使用它像:

学生S1 =新的学生(); objectToFile(“test.ser”,s1); 学生s2 = fileToObject(“test.ser”);

public static void objectToFile(String fileName, Serializable object){ 
    ObjectOutputStream oos = null; 
    try { 
     oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fileName))); 
     oos.writeObject(object); 
    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } finally{ 
     try { 
      oos.flush(); 
      oos.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
} 

public static Object fileToObject(String fileName){ 
    ObjectInputStream ois = null; 
    try { 
     ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(fileName))); 
     return ois.readObject(); 
    } catch (Exception e) { 
     return null; 
    } finally{ 
     try { 
      ois.close(); 
     } catch (IOException e) { 
      System.out.println(e.getMessage()); 
     } 
    } 
}