Java语言程序设计——篇十三(3)

news2024/9/21 22:49:19

在这里插入图片描述
在这里插入图片描述

       🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

  • 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
    您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻

在这里插入图片描述

对象序列化:对象I/O流与NIO 和NIO.2:new I/O

  • 对象序列化与对象流
    • 用ObjectOutputStream写出对象
    • 用ObjectInputStream读出对象
  • 序列化数组
  • NIO和NIO.2
    • 文件系统和路径
      • FileSystem类
      • Path接口对象

对象序列化与对象流

  • 将程序中的对象输出到外部设备(如文件、网络)中,称为对象序列化(serialization)。反之,从外部设备将对象读入程序中称为对象反序列化(deserialization)。
  • 一个类的对象要实现序列化,必须实现java.io.Serializable接口,该接口的定义如下。
public interface Serializable{}
  • ObjectInputStream是对象输入流,继承了InputStream类,实现了ObjectInput接口。
  • ObjectOutputStream是对象输出流,继承了OutputStream类,实现了ObjectOutput接口。

用ObjectOutputStream写出对象

  • 构造方法为:
 ObjectOutputStream(OutputStream out)
  • writeObject()方法格式为:
final void writeObject(Object obj)   throws IOException
  • 接口还定义多个方法用来输出基本数据类型,如
    public void writeInt(int v)
    public void writeFloat(float v)
    public void writeDouble(double v)
  • 下面代码将一些数据和对象写到对象输出流中。
   FileOutputStream fos = new FileOutputStream("data.ser");
   ObjectOutputStream oos =  new ObjectOutputStream(fos);
   oos.writeInt(2010);        // 写出一个整数
   oos.writeObject(“你好”);     // 写出一个字符串
   oos.writeObject(LocalDate.now());     // 写出一个日期对象

用ObjectInputStream读出对象

  • 构造方法为:
public ObjectInputStream(InputStream in)
  • readObject()方法格式为:
    public final Object readObject()   throws IOException
  • 该接口中定义多个方法用来读入基本数据类型,如
    public int  readInt()
    public float readFloat()
    public double readDouble()
  • 下面代码建立一个对象输入流对象。
   FileInputStream fis = new FileInputStream("data.ser");
   ObjectInputStream oip = new ObjectInputStream(fis);
   int i = ois.readInt();
   String today = (String)ois.readObject();
   LocalDate date = (LocalDate)ois.readObject();
  • 对象序列化需要注意的事项:
    1️⃣序列化只能保存对象的非static成员,不能保存任何成员方法和static成员变量,而且序列化保存的只是变量的值。
    2️⃣用transient关键字修饰的变量为临时变量,也不能被序列化。
    3️⃣如果成员变量为引用类型,引用的对象也被序列化。

序列化数组

  • 数组是对象,也可以被序列化。如果数组中的所有元素都是可序列化的,这个数组就是可序列化的。
  • 一个完整的数组可以用·writeObject()·方法存入文件,之后用·readObject()·方法读取到程序中。

NIO和NIO.2

  • 为了增强Java I/O功能,在JDK 1.4中增加了一些新的API,称为New I/O(NIO), NIO API是java.nio包及其子包中定义的。
  • 在JDK 7中又新引进了一些包,称作NIO.2,用来对现有技术进行补充。NIO.2的接口和类通过java.nio.file包及其子包提供。

文件系统和路径

  • 一个文件系统可以包含三类对象:
    ① 文件
    ② 目录(也称文件夹)
    ③ 符号链接(symbolic
    在这里插入图片描述
  • 绝对和相对路径:
    ① 绝对路径(绝对路径是以根元素为起点的路径,包含定位文件的所有信息。D:\study\user\report.txt)
    ② 相对路径相对路径是不包含根元素的路径,例如,study\com\Hello.java

FileSystem类

  • FileSystem表示一个文件系统,它是一个抽象类,可以调用FileSystems类的getDefault()静态方法来获取当前的文件系统。
FileSystem fileSystem = FileSystems.getDefault();
  • FileSystem类常用方法:
   abstract Path getPath(String first, String …more)
   abstract String getSeparator()
   abstract Iterable<Path>getRootDirectores()
   abstract boolean isOpen()
   abstract boolean isReadOnly()

Path接口对象

  • 在Java 7中应使用NIO.2的java.nio.file.Path接口对象代替java.io.File。
  • 可以使用Paths(注意是复数)类的get()方法创建Path对象:
   Path p1 = Paths.get("D:\\study\\com\\Hello.java");
   Path p2 = Paths.get(args[0]);
   Path p3 = Paths.get(
                   URI.create("file:///users/joe/FileTest.java"));
  • 检索路径信息:
  • Path对象可以看做是一个名称序列,每一级目录可以通过索引指定。目录结构的最顶层索引为0,目录结构的最底层元素索引是n-1,n是总层数。例如,getName(0)方法将返回最顶层目录名称。
    Path path = Paths.get("D:\\study\\user\\report.txt");
    System.out.println("getFileName:" + path.getFileName());

博主用心写,读者点关注,互动传真情,只是不迷路。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2042312.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

virtual_host.hpp模块

目录 一.VirtualHost虚拟机模块介绍 二.VirtualHost的实现 1. 类概述 2. 交换机操作 3. 队列操作 4. 绑定操作 5. 消息操作 6. 清理操作 总结 三.全部代码 一.VirtualHost虚拟机模块介绍 虚拟机是对之前几个数据管理模块的整合&#xff0c;并封装了之前的一些操作。…

安装Jmeter,配置jdk

注意点: java的jdk和jmeter的版本相匹配 ! ! ! 目前我使用的是1.8的的,jmeter使用的是5.6.3 JDK下载地址&#xff1a;https://www.oracle.com/cn/java/technologies/downloads 别管,直接傻瓜式安装点点就完了... 1.电脑-属性-高级系统设置-环境变量 2.系统变量-新建-变量…

如何理解:进程控制

文章目录 前言&#xff1a;进程创建&#xff1a;进程终止&#xff1a;如何终止进程&#xff1f;进程等待非阻塞等待&#xff1a; 总结&#xff1a; 前言&#xff1a; ​ 对于前面的地址空间的学习&#xff0c;我们现在了解到原来所谓变量的地址其实是虚拟地址&#xff0c;该虚…

python管理mysql(实现读写分离)及如何用Mycat读写分离

Day24 编写python代码实现读写分离 1、安装pymysql&#xff0c;它是python管理mysql的驱动&#xff0c;或者称为连接器 [rootpyhton ~]#pip3 config set global.index-url Simple Index [rootpython ~]# pip3 install pymysql #安装pymysql [rootpyhton ~]# python3 …

【C++】什么是内存管理?

如果有不懂的地方&#xff0c;可以看我以往文章哦&#xff01; 个人主页&#xff1a;CSDN_小八哥向前冲 所属专栏&#xff1a;C入门 目录 C/C内存分布 C内存管理方式 new/delete操作内置类型 new/delete操作自定义类型 operator new与operator delete函数 new和delete实现…

【秋招笔试】24-08-10-OPPO-秋招笔试题(第二套)

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

2024巴黎奥运会VIS视觉设计分享学习

2024年巴黎奥运会的视觉识别系统&#xff08;VIS&#xff09;以其独特的设计和创意&#xff0c;展现了法国的优雅与活力。该设计融合了现代感与传统元素&#xff0c;以巴黎标志性的建筑和文化为灵感&#xff0c;创造出一系列令人印象深刻的视觉符号。 色彩上&#xff0c;采用了…

SpringCloud网关

1.网关的作用 2.网关入门 2.1引入依赖 <dependencies><dependency><groupId>com.heima</groupId><artifactId>hm-common</artifactId><version>1.0.0</version></dependency><!--网关--><dependency><g…

【qt】基于tcp的客户端搭建

ui界面设计 我们给客户端提供服务器的ip地址&#xff0c;以及服务器的端口号 1.界面设计 2.修改对象名称 代码实现 断开按键的槽函数处理 转到槽&#xff0c;然后实现槽函数&#xff0c;直接关闭该窗口&#xff0c;就可以了 连接槽函数编写&#xff0c;首先要支持网络通信…

C# 解析html

C#解析html库 网上查找有如下几个库 SGMLReader (好久不更新了)html-agility-pack(活跃)AngleSharp(活跃)CsQuery(好久不更新) 选择AngleSharp 原因:能向写js一样获取元素 安装AngleSharp 1.2.0-beta.431 using AngleSharp.Html.Parser;namespace HtmlParse01;class Progr…

示波法电子血压原理

血压是指血液在血管内流动时作用于单位面积血管壁的侧压力&#xff0c;它是推动血液在血管内流动的动力。在不同血管内被分别称为动脉血压、毛细血管压和静脉血压&#xff0c;通常所说的血压是指体循环的动脉血压。 血压正常范围值&#xff1a;收缩压130mmHg&#xff0c;舒张压…

【Python学习-UI界面】PyQt5 小部件9-QMenuBar,QMenuQAction 菜单栏

样式如下: 在pyqt5中直接添加就行&#xff0c;子项只能输入英文&#xff0c;输入中文的方式待研究 一个水平的 QMenuBar 位于QMainWindow对象的标题栏下方&#xff0c;用于显示QMenu对象。 QMenu 类提供了一个可以添加到菜单栏的小部件。它还用于创建上下文菜单和弹出菜单。…

基于YOLOv10深度学习的草莓成熟度检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、人工智能

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

SpringCloud完整教程

一下内容为本人在听黑马程序员的课程时整理的 微服务技术栈 ⎛⎝≥⏝⏝≤⎛⎝ ⎛⎝≥⏝⏝≤⎛⎝ ⎛⎝≥⏝⏝≤⎛⎝ ⎛⎝≥⏝⏝≤⎛⎝ 1、微服务框架 1.1、认识微服务 1.1.1、服务架构演变 **单体架构&#xff1a;**将业务的所有功能集中在一个项目中开发&#xff0c;打包成…

TypeScript 编译选项

编译TS 编译 .ts 文件&#xff1a; tsc app.ts执行命令tsc app.ts 可以把 单个文件 app.ts编译成 app.js。 这个命令需要每次编译时手动执行。 自动编译文件 tsc app.ts -w // 或者 tsc app.ts --watch通常 -w 或 --watch 指令用于启动 TypeScript 编译器的监视模式。 编译…

梅丽尔·斯特里普表演艺术家中心对外开放并恢复线下活动 体现了她的“卓越”

梅丽尔斯特里普表演艺术家中心对外开放并恢复线下活动 体现了她的“卓越” 2024-08-14 20:38 发布于&#xff1a;河北省 该中心将为美国演员工会和美国电视广播艺人协会的艺术家提供资源和机会&#xff0c;而且全部免费 同时命名的还有汤姆汉克斯和丽塔威尔逊放映室、妮可…

工业WiFi网关在工业领域的具体应用-天拓四方

工业WIFI网关在工业领域的应用已经变得极为广泛&#xff0c;它不仅是连接工业设备、传感器与云平台之间的桥梁&#xff0c;更是推动工业智能化和自动化的重要动力。下面将进一步详细介绍工业WiFi网关在工业领域的一些具体应用。 工业自动化生产&#xff1a; 在工业自动化生产…

算法力扣刷题记录 八十一【343. 整数拆分】

前言 动态规划第8篇。记录 八十一【343. 整数拆分】 一、题目阅读 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。返回 最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 …

货代企业转型海外仓,会面临哪些难点?

根据数据统计&#xff0c;跨境电商出口B2C物流市场规模已经达到3825亿元&#xff0c;其中海外仓物流以2102亿的规模以及55%的市场份额成为主流。从细分领域看&#xff0c;其中FBA物流、第三方仓、自建仓的市场规模分别达到1156亿、736亿、210亿。 在跨境物流行业中&#xff0c…

uniapp粘贴板地址识别 address-parse插件的使用

1&#xff1a; 插件安装 主要是依靠 address-parse 这个插件&#xff1a; 官网 收货地址自动识别 支持pc、h5、微信小程序 - DCloud 插件市场 // 首先需要引入插件 npm install address-parse --save 2&#xff1a;html部分 <view class""><view class&quo…