---------------------- java
package com.io.file; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /* * 对对象进行操做,把对象数据存入到文件中,再从文件中读取 */ public class Object_in_out { public static void main(String[] args) { try { // write(); read(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void read() throws FileNotFoundException, IOException, ClassNotFoundException{ ObjectInputStream ois=new ObjectInputStream(new FileInputStream("g:/java/object.txt")); Person p=(Person)ois.readObject(); System.out.println(p.getName()+",,,,,,,,"+p.getAge()); ois.close(); } public static void write() throws FileNotFoundException, IOException{ ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("g:/java/object.txt")); oos.writeObject(new Person("aaa",33));//把对象写入到文件中 oos.close(); } } class Person implements Serializable{//注意这个对象类要实现Serializable序列化接口 //此接口会为该对象生成一个根据该对象的序列化id,若是本对象改变了,调用本对象的类要从新编译才行 //或者直接指定本对象的序列化id public static final long serialVersionUID = 42L;//为本对象生成一个固定的系列化id,这样本类改变的话,调用类就不用从新编译了 private String name; public static String country="";//注意这里,静态不能序列化,由于序列化的在对内存中,而静态在方法区中 private int age; //若是不想被序列化,但又不定义静态,能够用transient关键字修饰,保证被修饰的能够在对内存中存在,但不能存放到文本文件中 //如这样定义就能够了:private transient int ages; public Person(String name,int age){ this.name=name; this.age=age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }