15.对象流
1.对象输出流-基本数据类型
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class Dome15 {
public static void main(String[] args) {
ObjectOutputStream oos = null;
try {
//创建对象输出流对象
oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("d:/c.txt")));
oos.writeInt(123);
oos.writeChar('哈');
oos.writeUTF("你好");
oos.flush();
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (oos!=null){
oos.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}

2.对象输入流-基本数据类型
import java.io.*;
public class Dome16 {
public static void main(String[] args) {
ObjectInputStream ois = null;
try {
//创建对象输入流对象
ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream("d:/c.txt")));
//注意:对象输入流读取顺序要和对象输出流一致
System.out.println(ois.readInt());
System.out.println(ois.readChar());
System.out.println(ois.readUTF());
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (ois!=null){
ois.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}

3.序列化对象(将内存中的java对象通过序列化的方式写入到磁盘文件中)
将对象序列化到对象,被序列化的对象必须要实现Serializable序列化接口,否则会抛出异常
创建被序列化的对象
import java.io.Serializable;
public class User implements Serializable {
private int id;
private String name;
//无参构造
public User() {
}
//有参构造
public User(int id, String name) {
this.id = id;
this.name = name;
}
//get set 方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
序列化User对象
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
public class Dome17 {
public static void main(String[] args) {
ObjectOutputStream oos = null;
try {
//创建对象流
oos = new ObjectOutputStream(new FileOutputStream("d:/test.txt"));
//实例化被序列对象
User user = new User(18, "林");
//序列化User对象
oos.writeObject(user);
//刷新
oos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (oos != null) {
oos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

4.对象反序列化
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class Dome18 {
public static void main(String[] args) {
ObjectInputStream ois = null;
try {
//创建对象流
ois = new ObjectInputStream(new FileInputStream("d:/test.txt"));
//读取文件中的对象
User user = (User) ois.readObject();
//获取存在对象中的信息
System.out.println(user.getId() + user.getName());
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ois != null) {
ois.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}


浙公网安备 33010602011771号