package seday06;

import java.io.Serializable;
import java.util.Arrays;

/**
* @author xingsir
* 使用当前类来测试对象流的对象读写操作
* 当前类实例若想被对象流进行读写,那么必须实现接口:java.io.Serializable
*/
public class Person implements Serializable {
private static final long serialVersionUID = 1L; //鼠标放到Person位置然后add generate serial version ID生成
private String name;//姓名
private int age;//年龄
private String gender;//性别
/*
* transient关键字
* 被其修饰的属性在该对象进行序列化时值会被忽略。 忽略不必要的属性值可以达到对象序列化时的"瘦身"操作, 减少资源的开销。
*/
private transient String[] otherInfo;
/*
* 右键点-Source-点 -generate constructor using fields,选择要生成的属性
* 这个选项自动生成带参数的 构造函数
*/
public Person(String name, int age, String gender,String[] otherInfo) {
super();
this.name = name;
this.age = age;
this.gender = gender;
this.otherInfo = otherInfo;
}
/*
* 右键点-Source-点 -generate getters and setters,选择要生成的属性
*/
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String[] getOtherInfo() {
return otherInfo;
}
public void setOtherInfo(String[] otherInfo) {
this.otherInfo = otherInfo;
}
public String tosString() {
return name+","+age+","+gender+","+
Arrays.toString(otherInfo);
}

}

//======================================================================

package seday06;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

/**
* @author xingsir
* 对象流: 它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。
* java.io.ObjectOutputStream
* java.io.ObjectInputStream
*/
public class OosDemo {

public static void main(String[] args) throws IOException {
/*
*创建一个person_obj.txt文件
* 将一个Person实例写入文件person_obj.txt中
*/
String name="灭霸";
int age=300;
String gender = "男";
String[] otherInfo = {"会弹响指","身材高大","为减轻地球资源做出杰出贡献"};
Person person=new Person(name, age, gender,otherInfo);
System.out.println(person);
FileOutputStream fos=new FileOutputStream("person_obj.txt");
ObjectOutputStream oos =new ObjectOutputStream(fos);
/*
* writeObject方法是ObjectOutputStream提供的方法, 作用是将给定的对象按照其结构转换为一组字节,
* 然后再将字节通过其连接的流写出。实际转换的字节比该对象保存的内容要大,因为还要包含该对象的结构信息等内容。
*/
/*
* 下面写对象时每个流负责的工作分别为:对象流首先将对象按照其结构转换为一组字节, 这个过程称为:对象序列化
*
* 序列化后的字节在经过文件输出流最终写入了文件(写入文件就等于写入了磁盘做长久保存,关机数据
* 也不会丢失),而这个过程称为:数据持久化
*/
oos.writeObject(person);
System.out.println("写出完毕成");
oos.close();
}

}

//====================================================================================

package seday06;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

/**
* @author xingsir
* 对象输入流 ObjectInputStream
*/
public class OiSDemo {

public static void main(String[] args) throws IOException,ClassNotFoundException{
//读取文件中字节
FileInputStream fis=new FileInputStream("person_Obj.txt");
//对象输入流
ObjectInputStream ois= new ObjectInputStream(fis);
// readObject的工作进行对象的反序列化
Person person =(Person)ois.readObject();//强制转换类型
System.out.println(person);//打印

ois.close();//关闭

}

}

对象流,它们是一对高级流,负责即将java对象与字节之间在读写的过程中进行转换。 * java.io.ObjectOutputStream * java.io.ObjectInputStream的更多相关文章

  1. java对象流(二)

    对象流,可以将java中的对象转为字节进行输出.将对象写入文件时.文件输出流是将字节写入到文件中. 对象流是将给定的对象转化为一组字节.writeObject()方法就是将对象转为字节. 对象流,读的 ...

  2. 转换流读写操作 java.io.OutputStreamWriter ,java.io.InputStreamReader

    package seday07; import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStr ...

  3. 每天进步一点点-Java IO操作-Java Serializable(对象序列化)的理解和总结

    往硬盘文件里写数据 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.在另一端,反序列化将从该流重 ...

  4. JAVA 对象序列化——Serializable

    1.序列化是干什么的?       简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存object st ...

  5. 【Java技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

    序列化和反序列化 序列化就是指把对象转换为字节码: 对象传递和保存时,保证对象的完整性和可传递性.把对象转换为有字节码,以便在网络上传输或保存在本地文件中: 反序列化就是指把字节码恢复为对象: 根据字 ...

  6. 本地C代码中创建Java对象

    作者:唐老师,华清远见嵌入式学院讲师. 创建Java域的对象就是创建Java类的实例,再调用Java类的构造方法. 以Bitmap的构建为例,Bitmap中并没有Java对象创建的代码及外部能访问的构 ...

  7. JavaSE(五)JAVA对象向上转型和向下转型

    今天做了一个测试的题目,发现自己还是很多问题没有静下心来做.很多问题是可以自己解决的但是自己一是没有读清题意,二是自己心里太急躁了.所以这个要自己应以为鉴! 对象的转型问题其实并不复杂,我们记住一句话 ...

  8. java对象的四种引用:强引用、软引用、弱引用和虚引用

    在JDK1.2之前,创建的对象只有在处于可触及(reachable)的状态下,才能被程序使用.也就是说,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.垃圾回收器一旦发现这些无用对象,就会对 ...

  9. Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)

    一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ...

随机推荐

  1. WebGPU学习(六):学习“rotatingCube”示例

    大家好,本文学习Chrome->webgpu-samplers->rotatingCube示例. 上一篇博文: WebGPU学习(五): 现代图形API技术要点和WebGPU支持情况调研 ...

  2. CouchDB学习-维护

    官方文档 1 压缩 压缩操作是通过从数据库或者视图索引文件中移除无用的和老的数据减少硬盘使用空间.操作非常简单类似于其他数据库(SQLite等)管理系统. 在压缩目标期间,CouchDB将创建扩展名为 ...

  3. 千呼万唤始出来——uFUN开发板2.0开箱评测

    前言 今年3月,我参与了面包板社区组织的第一批uFUN开发板评测活动,并有幸能获得试用机会,那是我第一次了解到uFUN这个项目及背后的故事,4月份,uFUN 2.0版本来了,收到了张工送的一块样板,后 ...

  4. 微信小程序 存储数据到本地以及本地获取数据

    1.wx存储数据到本地以及本地获取数据 存到本地就是存到你的手机 wx.setStorageSync与wx.setStorage 1.1 wx.setStorageSync(string key, a ...

  5. java对象的实例化过程

    简单类对象的实例化过程 1.在方法区加载类: 2.在栈内存申请空间,声明变量P: 3.在堆内存中开辟空间,分配对象地址: 4.在对象空间中,对对象的属性进行默认初始化,类成员变量显示初始化: 5.构造 ...

  6. ObjectPool 对象池设计模式

    Micosoft.Extension.ObjectPool 源码架构.模式分析: 三大基本对象: ObjectPool抽象类 ObjectPoolProvider抽象类 IPooledObjectPo ...

  7. JS---案例:美女时钟

    案例:美女时钟 思路: 打开页面就有图片按每秒1张的顺序轮换,用到了日期对象,获取小时和秒. 封装到一个命名函数后,为了使页面打卡就有图片的轮换,先调用下f1,再设置setInterval <! ...

  8. 利用百度AI快速开发出一款“问答机器人”并接入小程序

    先看实现效果: 利用百度UNIT预置的智能问答技能和微信小程序,实现语音问答机器人.这里主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货! 想了解UNIT预置技能调用,请参看我之 ...

  9. ESLint + Prettier + husky + lint-staged 规范统一前端代码风格

    写在前面: ESLint: Find and fix problems in your JavaScript code. Prettier: Prettier is an opinionated co ...

  10. CRC校验算法的实例解析

    概念   CRC校验算法,说白了,就是把需要校验的数据与多项式进行循环异或(XOR), 进行XOR的方式与实际中数据传输时,是高位先传.还是低位先传有关.对于数据 高位先传的方式,XOR从数据的高位开 ...