您的位置:首页 > 其它

史上最全IO框架七(对象流:属于字节流)

2016-07-18 18:50 253 查看
package com.itheima.filedemo;

/**

* 类通过实现java.io.Serialzable接口以启用序列化功能(此接口为标记接口,乜有任何方法,类似克隆,)

*/

import java.io.Serializable;

public class Dog implements Serializable{

private String name;
//private transient int age;//使用transient关键字声明的属性讲不会被序列化
private int 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;
}
public Dog(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Dog() {
super();
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "Dog [name=" + name + ", age=" + age + "]";
}


}

package com.itheima.filedemo;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.OutputStream;

/**

* 对象流

* @author Administrator

*

*/

public class ObjectStreamDemo {

public static void main(String[] args) {
writeObject1();
readObject1();
writeObject2();
readObject2();
}

/**
* 使用ObjectOutputStream把对象写入文件中(序列化)
*/
public static void writeObject1(){
try {
OutputStream out = new FileOutputStream("E:\\obj.temp");
//根据字节输出流对象构造一个对象流对象
ObjectOutputStream oos = new ObjectOutputStream(out);
//输出数据
oos.writeInt(100);
//构造一个对象
Dog dog = new Dog("小白", 10);
//向文件中写入一个对象
oos.writeObject(dog);
//关闭流
oos.close();
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

/**
* 使用ObjectInputStream读取文件中的对象
*/
public static void readObject1(){
try {

InputStream is = new FileInputStream("E:\\obj.temp");
//根据字节输入流构造一个对象流对象
ObjectInputStream ois = new ObjectInputStream(is);
//读取一个整数(读取时必须按照顺序)
int num = ois.readInt();
//读取一个兑现
Dog dog = (Dog) ois.readObject();
//关闭流,输出
ois.close();
is.close();
//输出
System.out.println("num=" + num);
System.out.println(dog);
} 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();
}
}

/**
* 将一组对象序列化到文件中,(采用对象数组)
*/
public static void writeObject2(){
try {
OutputStream os = new FileOutputStream("E:\\obj.temp");
ObjectOutputStream oos = new ObjectOutputStream(os);
//对象数组
Dog[] dogs = new Dog[]{new Dog("小白",8),new Dog("小黑",2),new Dog("小红",4)};
//向文件中写入多个对象
oos.writeObject(dogs);
//关闭流
oos.close();
os.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

/**
* 从文件中读取数组对象
*/
public static void readObject2(){
try {
InputStream is = new FileInputStream("E:\\obj.temp");
ObjectInputStream ois = new ObjectInputStream(is);
Dog[] dogs = (Dog[]) ois.readObject();
//关闭
ois.close();
is.close();
for (Dog dog : dogs) {
System.out.println(dog);
}
} 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();
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: