【对象流】输入输出一个对象,而不仅仅是一个简短的信息(比如保存很多个复杂的用户的信息)。输入/出对象流是一个过滤器流,而文件是终点流,是结点流。
练习一、objectoutputstream的应用,保存一个复杂的用户信息
user:
package org.zhaiyujia.pkg1;
public class Users implements java.io.Serializable {//被写的对象必须序列化,实现Serializable的接口,否则写不进文件中
private String username,password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username=username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password=password;
}
}
TestObject:
package org.zhaiyujia.pkg1;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class TestObject {
public static void main(String[] args) {
try {
FileOutputStream oos=new FileOutputStream("f:/a.txt");
Users user1=new Users();
user1.setUsername("zhaiyujia");
user1.setPassword("123456");
ObjectOutputStream objs=new ObjectOutputStream(oos);
//转换了oos,使FileOutputStream变成了ObjectOutputStream对象
objs.writeObject(user1);
System.out.println("写入对象成功");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
文件中是被转过码的,但我们依旧能看出里面的用户名(zhaiyujia)及密码(123456)
练习二、objectinputstream的应用,验证文件中得到的用户名及密码
Users:
package org.zhaiyujia.pkg1;
public class Users implements java.io.Serializable {//被写的对象必须序列化,实现Serializable的接口,否则写不进文件中
private String username,password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username=username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password=password;
}
}
TestObject:
package org.zhaiyujia.pkg1;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
public class TestObject {
public static void main(String[] args) {
/*try {
FileOutputStream oos=new FileOutputStream("f:/a.txt");
Users user1=new Users();
user1.setUsername("zhaiyujia");
user1.setPassword("123456");
ObjectOutputStream objs=new ObjectOutputStream(oos);
//转换了oos,使FileOutputStream变成了ObjectOutputStream对象
objs.writeObject(user1);
System.out.println("写入对象成功");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
try {
FileInputStream fis = new FileInputStream("f:/a.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
Users user1=(Users) ois.readObject();
System.out.println(user1.getUsername()+":"+user1.getPassword());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}