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();
}
}
随机推荐
- 05 Ajax请求(扩展,延伸)
05 Ajax请求(扩展,延伸) 首先, 我们用Flask创建一个后台服务器(自己做网站了哈) 目录结构: 服务端: from flask import Flask, render_template, ...
- #点分治,Kruskal#AT3611 Tree MST
题目 给定一棵 \(n\) 个节点的树,现有有一张完全图, 两点 \(x,y\) 之间的边长为 \(w_x+w_y+dis_{x,y}\), 其中 \(dis\) 表示树上两点的距离. 求完全图的最小 ...
- #dfs,trie#洛谷 4341 [BJWC2010]外星联络
题目 分析 首先时间复杂度\(O(n^2)\)可过,统计子串个数可以用trie或者更高级的方法 可以枚举所有的后缀,然后建一个trie,这样这个trie就可以记录全部的子串 关于字典序排序,深搜的时候 ...
- #单位根反演,二项式定理#LOJ 6485 LJJ 学二项式定理
题目 \[\large\sum_{i=0}^nC(n,i)S^ia_{i\bmod 4} \] \(n\leq 10^{18},S,a\leq 10^8\) 分析 前面这一坨看起来就像是二项式定理,考 ...
- OpenHarmony装饰指定自定义组件:@BuilderParam装饰器
当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作.若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能.为解决此问题,ArkUI ...
- sql 语句系列(更新系列)[八百章之第六章]
使用另一个表更新记录 有时候我们的数据不会立即去更新,而是存在另外一张表中等待更新,这是在日常开发中常见的操作. update e set e.SAL=ns.SAL+e.SAL, e.COMM=ns. ...
- 重走py 之路 ——列表(一)
前言 因为最近公司有python项目维护,所以把python的基础入门的书整理一遍,因为有些忘记了,同时在看<<python编程>>这本书的时候觉得对有基础的有很多的赘余,打算 ...
- 通过UI自动化方式获取文章、视频信息
出于学习研究,对某账号的文章.视频分析一翻,尝试使用自动化方式看能否获取相应信息. 获取某号的文章有多重方法: 第一种是通过搜狗浏览器搜索账号(这种方式每天只能获取一篇文章,基本上没啥用.): 第二种 ...
- 技术人如何"结构化"高效思考?
1 前言 你是否在解决问题时,常常觉得脑子很乱,很多零散的信息迸发出来,但就是无法形成解决方案. 之所以这样,原因就在于,我们的大脑处理不了太多零散而复杂的信息.人类大脑在处理信息的时候,有两个规律: ...
- 力扣68(java)-文本左右对齐(困难)
题目: 给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本. 你应该使用 "贪心算法" ...