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. 基于HTML的购物车模型的代码设计

    HTML代码 <html lang="en"> <head> <meta charset="UTF-8"> ​ ​ < ...

  2. Dubbo环境搭建-ZooKeeper注册中心

    场景 Dubbo简介与基本概念: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555224 注: 博客: https:// ...

  3. CSS 盒子模型、RestCSS、浮动、定位

    盒子模型 边框:border 左边框:border-left 右边框:border-right 上边框:border-top 下边框:border-bottom 复合样式:border 边框颜色:bo ...

  4. 办公达人私藏的EXCEL辅助工具,一人抵十人,高效办公就靠它了!

    有很多小伙伴在日常工作中都离不开EXCEL的使用,但EXCEL实在是有太多困难.又复杂的操作,时间紧任务重这一天又废柴了,哎! 别担心,今天将为您分享个逆天强大的EXCEL辅助工具,帮大家快速搞定—— ...

  5. 百度大脑UNIT3.0解读之对话式文档问答——上传文档获取对话能力

    在日常生活中,用户会经常碰到很多复杂的规章制度.规则条款.比如:乘坐飞机时,能不能带宠物上飞机,3岁小朋友是否需要买票等.在工作中,也会面对公司多样的规定制度和报销政策.比如:商业保险理赔需要什么材料 ...

  6. 元类, pymysql

    元类, pymysql 一.元类 自定义元类 ''' 1.什么是元类? - 类的类就是type,其实type就是元类 2.元类的作用? 3.如何创建元类以及使用? ''' # # 1.一切皆对象 # ...

  7. 解决mysql导入数据量很大导致失败及查找my.ini 位置(my.ini)在哪

    数据库数据量很大的数据库导入到本地时,会等很久,然而等很久之后还是显示失败: 这是就要看看自己本地的没mysql是否设置了超时等待,如果报相关time_out这些,可以把mysql.ini尾部添加ma ...

  8. Nginx核心流程及模块介绍

    Nginx核心流程及模块介绍 1. Nginx简介以及特点 Nginx简介: Nginx (engine x) 是一个高性能的web服务器和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 ...

  9. Python 的 Geth 封装库 PyGeth

    PyGeth 是一个 Python 封装库,用来作为子进程运行 geth. 系统依赖 该库需要 geth 可执行文件. 安装 pip install py-geth 快速启动 运行连接到 mainne ...

  10. Java基础语法06-面向对象-继承

    七.继承 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类中无需再定义这些属性和行为,只需要和抽取出来的类构成继承关系. 继承的好处 提高代码的复用性. 提高代码的扩展性. 类与 ...