Java 中的 object 流:直接将 Object 对象写入或读出

  1. serializable 接口:序列化,可以被序列化的,若确实需要将某个类的对象写在硬盘上或网络上,想把他们序列化成一个字节流,就必须实现这个这个接口(标记性接口, 用来标记一下,这个类的对象可以被序列化,那么这个类到底是怎么被序列化的,自己不能控制,是 JDK 直接帮你控制这个类的对象的序列化过程).

  2. transient 关键字:用来修饰成员变量

  3. externalizable 接口:通过 readExternal()、 writeExternal() 这个两个方法,自己实现序列化过程.

Demo_1:

import java.io.*;
class TT implements Serializable { // 尽管没有重写任何方法,但是编译器看到这个标记后,就知道这个类可以被序列化
int i = 10;
int j = 9;
double d = 2.3;
int k1 = 15;
transient int k2 = 15; // 相当于这个K2是透明的,在序列化的时候不予考虑,也只是往硬盘上写的时候,不写K2的值,读出来就是默认值0
}
class Test {
public static void main(String[] args) {
TT tt = new TT();
tt.k1 = 8;
try {
FileOutputStream fos = new FileOutputStream("E:/eclipse projiect/TEST0505.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(tt);
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream("E:/eclipse projiect/TEST0505.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
TT ttRead = (TT)ois.readObject(); // 读出来的是Object类型,需要强制转换为TT类型
System.out.println(ttRead.i+" "+ttRead.j+" "+ttRead.d+" "+ttRead.k1+" "+ttRead.k2);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
} catch (ClassNotFoundException e){
e.printStackTrace();
}
}
}

运行结果:10 9 2.3 8 0

TEST0505.txt 文件中的内容是: sr TT(岷嗄? D dI iI jI k1xp@ffffff

Java中I/O流之Object流的更多相关文章

  1. Java中常用的字节流和字符流

    IO流(输入流.输出流) 字节流.字符流 1.字节流: InputStream.OutputStream InputStream抽象了应用程序读取数据的方式: OutputStream抽象了应用程序写 ...

  2. java 中的interface是否继承object

    首先我们从C++说起, c++可以多继承.也就是一个类型 --- class,可以继承自2个以上的父类型.多继承导致一个问题,很多人知道.例如,如果类型B,类型C均继承自类型A.然后类型D继承自类型B ...

  3. 详谈JAVA中的file类与IO流

    File类 位置于java.io包构造方法:File(String parent, String child)new file("d:\\","a.txt") ...

  4. java中对List<Map<String,Object>>中的中文汉字排序

    import java.text.Collator;import java.util.ArrayList;import java.util.Collections;import java.util.C ...

  5. JAVA中对List<Map<String,Object>>中的中文汉字进行排序

    转载于:http://blog.csdn.net/flykos/article/details/54631573 参考:http://www.jb51.net/article/88710.htm 本篇 ...

  6. JAVA中对List<map<String,Object>>根据map某个key值进行排序

    方法compareTo()比较此对象与指定对象的顺序.如果该对象小于.等于或大于指定对象,则分别返回负整数.零或正整数.返回整数,1,-1,0:返回1表示大于,返回-1表示小于,返回0表示相等. 普通 ...

  7. java中的异常The given object has a null identifier

    修改页面点击提交时报如下异常: org.hibernate.TransientObjectException: The given object has a null identifier: com. ...

  8. Java中的流

    一.Java中流的原理 流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行.设备可以是文件,网络,内存等. 四种基本流InputStream,Ou ...

  9. java基础(四):谈谈java中的IO流

    1.字节流 1.1.字节输出流output 1.1.1.数据写入文件中 通过api查找output.找到很多,其中java.io.OutputStream,OutputStream: 输出字节流的超类 ...

随机推荐

  1. 增强for循环和迭代器

    package example6; import java.util.ArrayList;import java.util.Iterator;import java.util.List; class ...

  2. redis整合Spring之序列化对象与反序列化

    写在最前面 1.Spring必须是4.2.6及以上版本才支持redis 2.jar包版本建议统一 需要准备jar包 1.aopalliance-1.0.jar 2.spring-data-common ...

  3. laravel 闪存

    https://blog.csdn.net/ckdecsdn/article/details/52083093

  4. 虚拟机的三种联网模式(桥接模式、NAT 模式、仅主机模式)

    虚拟机的网络连接方式分为三种,分别是桥接模式.NAT 模式.和仅主机模式,三种连接模式存在着一定的差异,那么我们该如何选择适合自己的连接模式呢? 1.桥接模式:在此模式下,虚拟机相当于一台独立的电脑, ...

  5. HashMap底层实现原理及扩容机制

    HashMap的数据结构:数组+链表+红黑树:Java7中的HashMap只由数组+链表构成:Java8引入了红黑树,提高了HashMap的性能:借鉴一张图来说明,原文:https://www.jia ...

  6. 利用主成分分析(PCA)简化数据

    一.PCA基础 线性映射(或线性变换),简单的来说就是将高维空间数据投影到低维空间上,那么在数据分析上,我们是将数据的主成分(包含信息量大的维度)保留下来,忽略掉对数据描述不重要的成分.即将主成分维度 ...

  7. 北京Uber优步司机奖励政策(2月1日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. LeetCode:40. Combination Sum II(Medium)

    1. 原题链接 https://leetcode.com/problems/combination-sum-ii/description/ 2. 题目要求 给定一个整型数组candidates[ ]和 ...

  9. spring data jap操作

    package com.example.demo; import com.example.entity.UserJ; import com.example.respository.UserJRespo ...

  10. vs2015 mvc项目数据迁移报错

    第一次做个mvc项目玩玩,然后需要数据迁移,也没做过,就百度找怎么数据迁移, 找到的方法是: 如果数据是在类库项目里就在‘程序包管理控制台’输入:enable-migrations -ContextT ...