ObjectStream

ObjectOutputStream

用于将属性和内容保存到文件中,保存数据类型和值,即序列化,该流为处理流

static和transient修饰的属性无法序列化,切被序列化的类必须实现Serializable接口,该类的属性中如果有类这个类也必须实现该接口.

package com.cn.file;

import org.junit.Test;

import java.io.*;

public class MyObjectStream {

    @Test
public void test(){
//序列化,将带属性的内容存入文件,必须实现Serializable
// 接口的对象才能被写入
String filePath="F:\\y\\file01.txt";
ObjectOutputStream os =null;
Dog dog1=new Dog(4,"哈哈");
try { os=new ObjectOutputStream(new FileOutputStream(filePath));
os.writeByte(10);
os.writeChar('a');
os.writeInt(100);
os.writeUTF("改革春风abc");
os.writeObject(dog1);
os.writeObject(new Dog(6,"嘿嘿"));
System.out.println("序列化完成"); } catch (IOException e) {
e.printStackTrace();
}finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
} } } }

ObjectInputStream

用于反序列化,将文件内容读取出来.


package com.cn.file; import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream; public class MyObjectStream2 { public static void main(String[] args) throws IOException, ClassNotFoundException {
String filePath="F:\\y\\file01.txt";
ObjectInputStream is=new ObjectInputStream(new FileInputStream(filePath));
//反序列化时顺序要和写入顺序一致,不然乱码
System.out.println(is.readByte());
System.out.println(is.readChar());
System.out.println(is.readInt());
System.out.println(is.readUTF());
Object dog=is.readObject();
System.out.println(dog.getClass());
System.out.println(dog.toString());
is.close(); } }

随机推荐

  1. 国民经济行业分类与代码(GB/T 4754-2002、GB/T 4754-2011、GB/T 4754-2017)并存入MySQL数据库【可获取下载】

    戳链接下载:https://download.csdn.net/download/weixin_45556024/34913490 或关注公众号[靠谱杨阅读人生]回复[行业]获取. 整理不易,资源fu ...

  2. #树形dp#洛谷 1272 重建道路

    题目 给出一个大小为 \(n\) 的树, 问至少断掉多少条边使得存在一个大小为 \(m\) 的连通块 \(n\leq 150\) 分析 设 \(dp[x][s]\) 表示以 \(x\) 为根的子树至少 ...

  3. #轮廓线dp#洛谷 1879 [USACO06NOV]Corn Fields G

    题目 分析 考虑状压dp在\(n\leq 21\)的情况下会TLE, 设\(dp[n][m][S]\)表示当前正在处理\((n,m)\)这个格子 并且轮廓线状态为\(S\)的方案数, 考虑可行状态最多 ...

  4. #折半搜索,状压dp#nssl 1471 Y

    分析 设\(dp[i][j][s]\)表示从\(i\)到\(j\)的一条路径状态为\(s\)是否存在 但是这样肯定会T掉,考虑拼凑路径,分成两部分, 设\(dp[0/1][s]\)分别表示以某个起点/ ...

  5. 在Keycloak中实现多租户并在ASP.NET Core下进行验证

    Keycloak是一个功能强大的开源身份和访问管理系统,提供了一整套解决方案,包括用户认证.单点登录(SSO).身份联合.用户注册.用户管理.角色映射.多因素认证和访问控制等.它广泛应用于企业和云服务 ...

  6. Python-docx插入图片报错“NameError: name 'Inches' is not defined”

    在使用 Python-docx 库操作Word文档时,需要插入图片,在设置宽高时,报错"NameError: name 'Inches' is not defined" 原因是:没 ...

  7. HarmonyOS如何高效上架原子化服务?这个平台帮你搞定!

    以往HarmonyOS应用和原子化服务都是在AGC(App Gallery Connect)上架,二者的上架流程一样.但应用的形态更加复杂庞大,上架时有很多必填字段,审核标准也相对复杂,而原子化服务的 ...

  8. HDC2021技术分论坛:跨端分布式计算技术初探

    作者:zhengkai,分布式通信首席技术专家 当今的移动应用都向着智能化和多样化方向发展,例如AI辅助,VR/AR应用,沉浸式游戏等.然而现实中的移动设备,因为便携性要求受限于尺寸.电池容量以及温控 ...

  9. 报表输入页码翻页(润乾 V2018)

    报表数据分了太多页,一页一页翻页查看数据嫌麻烦,可以试试这种翻页效果--输入页码翻页. 润乾报表提供了翻页相关的 JS 函数,可以在报表展现的页面中添加 JS 调用翻页函数实现输入页码跳转到对应页. ...

  10. 重新点亮linux 命令树————内存与文件系统的查看[二十七]

    前言 简单介绍一下内存的查看. 正文 常用命令. free top 查看磁盘使用率: fdisk df du du和ls的区别 free -h 查看内存使用率: free -g 显示按G来显示,-m用 ...