我需要将整个对象写入文件并随时检索。假设我想编写一个类“Student”的对象,它具有等级,名称,滚动等属性。当我想要在以后需要时访问和操作属性时。你能告诉我一个完成它的方法吗?
答案 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 :(得分:1)
答案 2 :(得分:1)
您正在寻找的最简单方法是Object Serialization.
基本上,您为Student
类添加了一个界面Serializable
,这样您就可以将该类的对象传递给ObjectOutputStream
。您可以使用此流将这些学生写入磁盘上的文件。之后,可以通过ObjectInputStream
读取它们以便再次修改。
答案 3 :(得分:1)
答案 4 :(得分:1)
如果你有简单的JavaBeans,你可以使用java.beans.XMLEncoder / XMLDecoder。
另一种方法是使用JAXB。
答案 5 :(得分:0)
最简单的方法是简单地实现Java的Serializable接口:http://download.oracle.com/javase/1.4.2/docs/api/java/io/Serializable.html
public class Student implements Serializable {
}
然后,您可以使用readObject / writeObject方法进行读/写。
答案 6 :(得分:0)
这些方法应该对你有帮助,你的学生班必须实施可服用, 使用它像:
学生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());
}
}
}