史上最全IO框架七(对象流:属于字节流)
2016-07-18 18:50
253 查看
package com.itheima.filedemo;
/**
* 类通过实现java.io.Serialzable接口以启用序列化功能(此接口为标记接口,乜有任何方法,类似克隆,)
*/
import java.io.Serializable;
public class Dog implements Serializable{
}
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 {
}
/**
* 类通过实现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(); } }
}
相关文章推荐
- Android 图片压缩
- mysql字符串不支持emoj表情的处理方法
- 亲子日记(六)
- oracle表设计汇总
- dijkstra算法java实现
- 汉德的故事
- CentOS7 安装 KVM
- linux小技巧--vim下多行注释和取消多行注释
- Jsp
- linux下使用mysqlbinlog生成日志文件
- java基础知识
- HTML5的WebSocket
- troubleshooting
- [hihoCoder太阁最新面经算法竞赛9] 题目一:Browser Caching (LRU缓存)
- Markdown编辑器
- 机器学习实战学习笔记1——KNN算法
- Hook机制之AMS&PMS
- android studio导入的 No such property: nexusUsername for class
- ElasticSearch 解析机制常见用法库 之 Character Filters常用用法
- php+uploadprogress实现上传进度功能