26ObjectStream
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();
}
}
随机推荐
- 国民经济行业分类与代码(GB/T 4754-2002、GB/T 4754-2011、GB/T 4754-2017)并存入MySQL数据库【可获取下载】
戳链接下载:https://download.csdn.net/download/weixin_45556024/34913490 或关注公众号[靠谱杨阅读人生]回复[行业]获取. 整理不易,资源fu ...
- #树形dp#洛谷 1272 重建道路
题目 给出一个大小为 \(n\) 的树, 问至少断掉多少条边使得存在一个大小为 \(m\) 的连通块 \(n\leq 150\) 分析 设 \(dp[x][s]\) 表示以 \(x\) 为根的子树至少 ...
- #轮廓线dp#洛谷 1879 [USACO06NOV]Corn Fields G
题目 分析 考虑状压dp在\(n\leq 21\)的情况下会TLE, 设\(dp[n][m][S]\)表示当前正在处理\((n,m)\)这个格子 并且轮廓线状态为\(S\)的方案数, 考虑可行状态最多 ...
- #折半搜索,状压dp#nssl 1471 Y
分析 设\(dp[i][j][s]\)表示从\(i\)到\(j\)的一条路径状态为\(s\)是否存在 但是这样肯定会T掉,考虑拼凑路径,分成两部分, 设\(dp[0/1][s]\)分别表示以某个起点/ ...
- 在Keycloak中实现多租户并在ASP.NET Core下进行验证
Keycloak是一个功能强大的开源身份和访问管理系统,提供了一整套解决方案,包括用户认证.单点登录(SSO).身份联合.用户注册.用户管理.角色映射.多因素认证和访问控制等.它广泛应用于企业和云服务 ...
- Python-docx插入图片报错“NameError: name 'Inches' is not defined”
在使用 Python-docx 库操作Word文档时,需要插入图片,在设置宽高时,报错"NameError: name 'Inches' is not defined" 原因是:没 ...
- HarmonyOS如何高效上架原子化服务?这个平台帮你搞定!
以往HarmonyOS应用和原子化服务都是在AGC(App Gallery Connect)上架,二者的上架流程一样.但应用的形态更加复杂庞大,上架时有很多必填字段,审核标准也相对复杂,而原子化服务的 ...
- HDC2021技术分论坛:跨端分布式计算技术初探
作者:zhengkai,分布式通信首席技术专家 当今的移动应用都向着智能化和多样化方向发展,例如AI辅助,VR/AR应用,沉浸式游戏等.然而现实中的移动设备,因为便携性要求受限于尺寸.电池容量以及温控 ...
- 报表输入页码翻页(润乾 V2018)
报表数据分了太多页,一页一页翻页查看数据嫌麻烦,可以试试这种翻页效果--输入页码翻页. 润乾报表提供了翻页相关的 JS 函数,可以在报表展现的页面中添加 JS 调用翻页函数实现输入页码跳转到对应页. ...
- 重新点亮linux 命令树————内存与文件系统的查看[二十七]
前言 简单介绍一下内存的查看. 正文 常用命令. free top 查看磁盘使用率: fdisk df du du和ls的区别 free -h 查看内存使用率: free -g 显示按G来显示,-m用 ...