使用对象处理流ObjectOutputStream读写文件
注意事项:
1.创建的对象必须实现序列化接口,如果属性也是类,那么对应的类也要序列化
2.读写文件路径问题
3.演示一个例子
(1)操作的实体类FileModel,实体类中有Map,HashMap这些自带的本身就实现了序列化。
public class FileModel implements Serializable {public Map<String, FileModel> subMap = new HashMap<String, FileModel>();private String name; private int attr; private int startNum; private int size; private String content;private FileModel father = null; public FileModel(String name){this.name = name;}public FileModel(String name, int startNum, int size) {this.name = name;this.attr = 2;this.startNum = startNum;this.size = size;}public FileModel(String name, int startNum) {this.name = name;this.attr = 3;this.startNum = startNum;this.size = 0;}//getter,setter方法...
}
(2)创建对象,并将其写到mode.dat文件当中
public static void write() {FileModel root = new FileModel("root");//不占用FileModel fileModel = new FileModel("kk.txt", 2);fileModel.setSize(2);FileModel fileModel1 = new FileModel("aa.txt", 3);root.subMap.put("kk.txt", fileModel1);root.subMap.put("aa.txt", fileModel1);try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("file-system/src/model.dat"))) {oos.writeObject(root);oos.flush();} catch (IOException e) {e.printStackTrace();}}
这里注意路径问题,
首先,看一下我的项目结构,可以使用相对路径或者绝对路径来读写,使用绝对路径,即从磁盘开始,即“D:\operating-system\file-system\src\model.dat” ; 使用相对路径,即相对当前项目目录operating-system,如上面代码中的“file-system/src/model.dat”。

(4)从model.dat文件当中读取
public static void read() {try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file-system/src/model.dat"))){FileModel fileModel = (FileModel)ois.readObject();String name = fileModel.getName();Map<String, FileModel> subMap = fileModel.subMap;System.out.println(name);subMap.forEach((s, fileModel1) -> System.out.println(s + "----->" + fileModel1.getName()));}catch (IOException e){e.printStackTrace();} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}
截图:

相关文章:
使用对象处理流ObjectOutputStream读写文件
注意事项: 1.创建的对象必须实现序列化接口,如果属性也是类,那么对应的类也要序列化 2.读写文件路径问题 3.演示一个例子 (1)操作的实体类FileModel,实体类中有Map,HashMap这些自带的本身就实现了序列化。 public class File…...
【高级网络程序设计】Block1总结
这一个Block分为四个部分,第一部分是Introduction to Threads and Concurrency ,第二部分是Interruptting and Terminating a Thread,第三部分是Keep Threads safety:the volatile variable and locks,第四部分是Beyon…...
linux下查看进程资源ulimit
ulimit介绍与使用 ulimit命令用于查看和修改进程的资源限制。下面是ulimit命令的使用方法: 查看当前资源限制: ulimit -a 这将显示当前进程的所有资源限制,包括软限制和硬限制。查看或设置单个资源限制: ulimit -<option> …...
C++ I/O操作---输入输出
本文主要介绍C I/O操作中的输入输出流。 目录 1 输入输出 2 输入输出流分类 3 C中的输入输出流 4 iostream 5 std::ofstream 6 std::fstream 7 std::getline 1 输入输出 C的输入输出是数据在不同设备之间的传输,即在硬盘、内存和外设之间的传输。 数据如水流…...
会 C# 应该怎么学习 C++?
会 C# 应该怎么学习 C? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「C的资料从专业入门到高级教程工具包」,点个关注,全部无偿共享给大家!!&a…...
CentOS 7 部署frp穿透内网
本文将介绍如何在CentOS 7.9上部署frp,并通过示例展示如何配置和测试内网穿透。 文章目录 (1)引言(2)准备工作(4)frps服务器端配置(5)frpc客户端配置(6&#…...
高效网络爬虫:代理IP的应用与实践
💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台🤟 代理 IP 推荐:👉品易 HTTP 代理 IP 💅 想寻找共同学习交流的小伙伴,…...
java设计模式-工厂方法模式
1.工厂方法(FactoryMethod)模式的定义 定义一个创建产品对象的工厂接口,将产品对象的实际创建工作推迟到具体子工厂类当中。这满足创建型模式中所要求的“创建与使用相分离”的特点。 2.工厂方法模式的主要优缺点 优点: 用户只需要知道具体工厂的名称…...
Python实验项目9 :网络爬虫与自动化
实验 1:爬取网页中的数据。 要求:使用 urllib 库和 requests 库分别爬取 http://www.sohu.com 首页的前 360 个字节的数据。 # 要求:使用 urllib 库和 requests 库分别爬取 http://www.sohu.com 首页的前 360 个字节的数据。 import urllib.r…...
实验三:指令调度和延迟分支
一、实验目的 加深对指令调度技术的理解。加深对延迟分支技术的理解。熟练掌握用指令调度技术来解决流水线中的数据冲突的方法。进一步理解指令调度技术对CPU性能的改进。进一步理解延迟分支技术对CPU性能的改进。 二、实验内容和步骤 首先要掌握MIPSsim模拟器的使用方法。见…...
【Oracle】PL/SQL语法、存储过程,触发器
一、Oracle数据类型 Orcle数据类型说明类比MySQL数据类型字符型CHAR固定长度的字符类型CHAR字符型VARCHAR2可变长度的字符类型VARCHAR字符型LONG大文本类型,最大2G数值型NUMBER数值类型,整数小数都可以,number(5)表示长度5的整数,…...
2020年第九届数学建模国际赛小美赛C题亚马逊野火解题全过程文档及程序
2020年第九届数学建模国际赛小美赛 C题 亚马逊野火 原题再现: 野火是指发生在乡村或荒野地区的可燃植被中的任何不受控制的火灾。这样的环境过程对人类生活有着重大的影响。因此,对这一现象进行建模,特别是对其空间发生和扩展进行建模&…...
保姆级 Keras 实现 YOLO v3 三
保姆级 Keras 实现 YOLO v3 三 一. 分配 anchor box二. 正负样本匹配规则三. 为每一个 anchor box 打标签3.1 anchor box 长什么样?3.2 每一个 anchor box 标签需要填充的信息有哪些?3.3 ( Δ x , Δ y , Δ w , Δ h ) (\Delta x, \Delta y, \Delta w, \Delta h) (Δx,Δy,…...
HPM6750系列--第十篇 时钟系统
一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解(基本操作)》我们讲解了HPM6750 GPIO相关内容,再进一步讲解其他外设功能之前,我们有必要先讲解一下时钟系统。 时钟可以说是微控制器系统中的心脏,外设必须依赖时钟才…...
【简单总结】中断类型号 中断向量 中断入口地址
通过中断类型号可以计算出中断向量的地址。 然后根据该地址可以在中断向量表中取出中断服务程序的入口地址(中断向量)。 而中断向量就是中断服务程序入口地址。 做个不严谨的图: 1:通过中断类型号找到中断向量 2:通…...
【Python百宝箱】从传感器到云端:深度解析Python在物联网中的多面应用
迈向智能未来:Python与物联网生态系统的完美融合 前言 随着物联网技术的不断发展,Python作为一种灵活且强大的编程语言,逐渐成为物联网开发的重要工具之一。本文将深入探讨物联网领域中常用的Python库和框架,涵盖了从轻量级通信…...
weston 1: 编译与运行傻瓜教程(补充)
系统kubuntu23.10 git clone https://gitlab.freedesktop.org/wayland/wayland.git 86588fbdebe7f6ac9363d98f524e4ae14bd4b019 meson build/ --prefix$WLD ninja -C build/ install git clone https://gitlab.freedesktop.org/wayland/wayland-protocols.git c4f559866f13…...
微服务保护--线程隔离(舱壁模式)
一、线程隔离的实现方式 线程隔离有两种方式实现: 线程池隔离 信号量隔离(Sentinel默认采用) 如图: 线程池隔离:给每个服务调用业务分配一个线程池,利用线程池本身实现隔离效果 信号量隔离:…...
集群监控Zabbix和Prometheus
文章目录 一、Zabbix入门概述1、Zabbix概述2、Zabbix 基础架构3、Zabbix部署3.1 前提环境准备3.2 安装Zabbix3.3 配置Zabbix3.4 启动停止Zabbix 二、Zabbix的使用与集成1、Zabbix常用术语2、Zabbix实战2.1 创建Host2.2 创建监控项(Items)2.3 创建触发器&…...
K8S(七)—污点、容忍
目录 污点、容忍污点(Taints):容忍(Tolerations):如何一起使用污点和容忍:操作符(Equal、Exists)例子基于污点的驱逐基于节点状态添加污点 污点、容忍 官网地址…...
用tcpreplay+Wireshark搭建网络攻防实验环境:手把手教你复现渗透测试流量
实战指南:用tcpreplay与Wireshark构建网络攻防实验环境 在网络安全领域,理论知识的掌握固然重要,但真正的技能提升往往来自于实战演练。然而,直接在真实网络环境中进行渗透测试或攻击模拟不仅存在法律风险,还可能对生…...
达摩院春联生成模型实战:输入两字祝福词,自动生成上下联和横批
达摩院春联生成模型实战:输入两字祝福词,自动生成上下联和横批 1. 春联生成模型简介 1.1 模型核心功能 达摩院AliceMind团队开发的春联生成模型是一款基于PALM大模型的专用AI工具,它能将简单的两字祝福词转化为完整的春联作品。这个模型特…...
DeepSeek-V3量化黑科技:w4a8精度反超官方!
DeepSeek-V3量化黑科技:w4a8精度反超官方! 【免费下载链接】DeepSeek-V3-w4a8-mtp-QuaRot-per-channel 项目地址: https://ai.gitcode.com/Eco-Tech/DeepSeek-V3-w4a8-mtp-QuaRot-per-channel 导语:国内大模型量化技术再获突破&#…...
POV-RAY入门指南 - 从零开始掌握光线追踪(1)
1. 初识POV-Ray:光线追踪的艺术 第一次打开POV-Ray时,我被它生成的金属球反射效果震撼到了——桌面上那个虚拟球体竟然能精确反射出周围环境的每处细节,连窗框的倒影都清晰可见。这种基于物理的光线追踪技术,正是好莱坞大片特效的…...
macOS专属方案:OpenClaw+nanobot镜像的5个效率技巧
macOS专属方案:OpenClawnanobot镜像的5个效率技巧 1. 为什么选择OpenClawnanobot组合 作为一个长期使用macOS的开发者,我一直在寻找能够提升日常工作效率的自动化工具。直到遇到OpenClaw和nanobot这个组合,才真正找到了适合个人使用的智能助…...
2026 国内源码网站 TOP10:高速稳定 + 中文友好,开发者收藏版
对于国内开发者、站长、学生与创业团队来说,稳定高速、全中文、资源靠谱、无冗余广告的源码平台,能大幅降低开发成本、提升项目落地效率。2026 年实测筛选出国内综合体验 TOP10 源码站点,兼顾免费学习、商用部署、快速建站等场景,…...
探索前沿技术:如何利用AI优化现代软件开发流程
1. AI如何改变现代软件开发的面貌 十年前我刚入行时,软件开发还停留在"人肉编程"阶段。每个功能都要手动敲代码,调试全靠print大法,项目管理用Excel表格记录进度。现在回想起来,当时的开发方式就像用手工织布机做衣服—…...
obsidian-i18n:让Obsidian插件全面支持中文的效率提升方案
obsidian-i18n:让Obsidian插件全面支持中文的效率提升方案 【免费下载链接】obsidian-i18n 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-i18n Obsidian作为一款强大的知识管理工具,其丰富的插件生态极大扩展了核心功能。然而…...
如何突破窗口限制?专业窗口调整工具让桌面管理效率提升300%
如何突破窗口限制?专业窗口调整工具让桌面管理效率提升300% 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否曾遇到过这样的困扰:重要的应用程序窗口无…...
YOLO11 vs YOLOv8 实测对比:在自定义数据集上,精度和速度到底提升了多少?
YOLO11 vs YOLOv8 深度实测:工业场景下的精度与效率抉择 当生产线上的摄像头每秒捕获30帧图像时,算法每增加1%的误检率就意味着每小时可能多出上百次错误警报。这正是我们在某汽车零部件缺陷检测项目中面临的现实挑战——选择YOLOv8还是新发布的YOLO11&a…...
