Java基础——IO流、序列化和反序列化

图像识别火灾检测系统实战:从火焰特征到YOLO部署全解析 计算机视觉技术正深入改变传统消防的感知方式。图像识别火灾检测利用摄像头采集的视频流,通过颜色、动态和形态特征分析,实现早期火情的自动发现与定位。其核心原理在于,火焰在视觉上具有独特的颜色分布、闪烁特性和轮廓变化,借助目标检测模型如YOLO,可在复杂场景中区分真实火焰与干扰物。这项技术广泛应用于仓库、园区、隧道等大空间场所,是智慧消防的重要支撑。本文从火焰视觉特征、数据集构建、模型选型与系统架构设计出发,结合部署实践中的误报与算力优化经验,为开发者提供一套可落地的视频火焰检测方案。 阅读详情

 

 

package com.xupk.serialize;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;

/***
 * 将对象数组序列化到硬盘文件中,再反序列化回来
 * 
 * @author xupk
 * 
 */
public class ObjStream {

	public static void main(String[] args) {
		Person p1 = new Person("xupk", "男", 18, new Car("alue", 166));
		Person p2 = new Person("xupk", "男", 28, new Car("blue", 266));
		Person p3 = new Person("xupk", "男", 38, new Car("clue", 366));
		Person[] ps = new Person[] { p1, p2, p3 };
		String path = "C:/workspace/eclipse01/IOPrj";
		String fileName = "p2.txt";
		File file = ser(ps, path, fileName);
		System.out.println("name: " + file.getName());
		System.out.println("parent: " + file.getParent());
		System.out.println("parentFile: " + file.getParentFile());
		System.out.println("path: " + file.getPath());
		System.out.println("absolutePath: " + file.getAbsolutePath());
		System.out.println("absoluteFile: " + file.getAbsoluteFile());
		Person[] pp = dser(file);
		for (Person person : pp) {
			System.out.println(person);
		}
	}

	/***
	 * 序列化对象,将对象输出到文件中
	 * @param ps
	 * @param path 文件路径
	 * @param fileName 文件名
	 * @return 保存序列化对象的文件
	 */
	private static <T extends Serializable> File ser(T ps, String path,
			String fileName) {
		OutputStream outs = null;
		ObjectOutputStream out = null;
		File file = new File(path, fileName);
		//如果指定路径的文件不存在,就新建一个文件
		if (!file.exists()) {
			try {
				file.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		try {
			outs = new FileOutputStream(file);//从file中读取文件字节输出流
			out = new ObjectOutputStream(outs);//将输出流转成对象字节输出流
			out.writeObject(ps);//把对象写到输出流中
		} catch (Exception e) {
		} finally {
			try {
				outs.close();
				out.close();
			} catch (Exception e2) {
			}
		}
		return file;
	}

	/***
	 * 反序列化对象,从文件中读取对象
	 * 
	 * @param file 从file中读取数据
	 * @return 返回反序列化后的对象
	 */
	@SuppressWarnings("unchecked")
	private static <T extends Serializable> T dser(File file) {
		if (!file.exists()) {
			try {
				throw new FileNotFoundException("");
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}
		}
		InputStream ins = null;
		ObjectInputStream in = null;
		try {
			ins = new FileInputStream(file);
			in = new ObjectInputStream(ins);
			return (T) in.readObject();
		} catch (Exception e) {
		} finally {
			try {
				ins.close();
				in.close();
			} catch (Exception e2) {
			}
		}
		return null;
	}

}

 

package com.xupk.serialize;

import java.io.Serializable;

public class Person implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8350010615659256735L;
	private String name;
	private String sex;
	private int age;
	private Car car;

	public Person(String name, String sex, int age, Car car) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.car = car;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Car getCar() {
		return car;
	}

	public void setCar(Car car) {
		this.car = car;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", sex=" + sex + ", age=" + age
				+ ", car=" + car + "]";
	}

}

 

package com.xupk.serialize;

import java.io.Serializable;

/**
 * @author xupk
 * 
 */
public class Car implements Serializable{

	
	/**
	 * 
	 */
	private static final long serialVersionUID = -555269900556154294L;

	public Car(String color, int maxSpeed) {
		super();
		this.color = color;
		this.maxSpeed = maxSpeed;
	}

	@Override
	public String toString() {
		return "Car [color=" + color + ", maxSpeed=" + maxSpeed + "]";
	}

	private String color;
	private int maxSpeed;

	public String getColor() {
		return color;
	}

	public void setColor(String color) {
		this.color = color;
	}

	public int getMaxSpeed() {
		return maxSpeed;
	}

	public void setMaxSpeed(int maxSpeed) {
		this.maxSpeed = maxSpeed;
	}

}


值得注意的是,序列化的类都要实现Serializable接口,如果不是,那么将无法序列化。上面的ObjStream类中,两个方法我都用了泛型,有一句<T extends Serializable>就是指定序列化的类必须要实现Serializable接口的,不然编译期都会报错了。

 

 

 

双馈风机并网系统宽频振荡机理与抑制方法研究 双馈风机并网系统宽频振荡分析与抑制 摘要:本文研究了双馈风机(DFIG)接入弱电网引发的宽频振荡问题。通过建立DFIG并网系统阻抗模型,分析了锁相环带宽、电流环带宽等参数对阻抗特性的影响。研究揭示了DFIG与电网阻抗交互导致交截频率处相位差超过180°的振荡机理。提出基于锁相环优化的阻抗重塑抑制策略,采用电压补偿和陷波器改善系统稳定性。仿真结果表明,该方法能有效降低相位差约10°-168°,显著抑制宽频振荡。代码实现了阻抗建模、稳定性分析和抑制策略验证,为工程应用提供了理论依据。 阅读详情

相关推荐

逆变器技术解析:DDSRF双解耦在正负序分离中的关键作用

本文深入解析了DDSRF双解耦技术在逆变器正负序分离中的关键作用。通过建立正反旋转坐标系并利用交叉反馈解耦网络,DDSRF能快速、精准地分离电网电压中的正负序分量,从而显著提升锁相环在电网不平衡条件下的精度与系统稳定性,是现代高性能并网逆变器的核心算法之一。

m3n5b7v8c9x的博客 410

Java的IO流与对象的序列化浅谈

今天再次回顾了一些关于java IO流的知识。虽然以前会点IO的方面的编程,但是还是知其然不知其所以然。 首先上一张IO流的主要家族图吧。           该图给出了IO流的具体分类和各类之间的继承关系。其中还给出了各个类的使用场景和用途。 一、IO流的主流分类     IO流主要分为字节流和字符流。它们之间的区别就是: 1、读写的单位不同,字节流是以字节(8bit)

XXiaoLEI的专栏 3453

告别谷歌翻译失效!手把手教你用Immersive Translate插件实现双语网页阅读(附Chrome/Edge/Firefox保姆级配置)

本文详细介绍了如何使用Immersive Translate插件实现双语网页阅读,解决谷歌翻译失效的问题。通过Chrome、Edge和Firefox的保姆级配置指南,帮助用户轻松安装和使用这款支持双语对照、智能识别网页内容的翻译插件,提升外文资料阅读效率。

weixin_28683689的博客 486

Java IO流、对象的序列化(Serializable)和反序列化

参考: http://www.blogjava.net/jiangshachina/archive/2012/02/13/369898.html http://www.importnew.com/24490.html https://blog.youkuaiyun.com/jason_279/article/details/52947093 1. 什么是Java对象序列化 &nbsp;&nbsp;&...

Twilightuse93的专栏 574

关于42步进电机驱动——基于STM32 HAL库实现

我找了好多资料,好多关于42步进电机的都是文档,这么文档都需要积分,需要积分就算了内容还非常差,浪费时间和电脑的内存。关于大部分是基于Arduino和51去驱动的 42步进电机驱动硬件如下: 首先你要了解步进电机的驱动原理,我也不啰嗦了,请看这边博客: 二相四线,四相五线,四相六线步进电机接线及驱动方法 , 看完这篇你就知道驱动和接线的原理了。 起初我也为如何接线烦恼,因为有些博客在讲述这些问题的时候没有讲的很透彻。 方法如下: ①用万用表调到欧姆档,用其中一个表笔搭在一个引脚上,依次测其它.

Jodan132的博客 1万+

AGM Supra软件从零到一:国产CPLD工程创建全流程实战解析

本文详细解析了AGM Supra软件在国产CPLD开发中的全流程实战操作,从工程创建到代码开发、编译调试,再到高级技巧与疑难排解。特别对比了Supra与Quartus的差异,提供了工程路径管理、Quartus项目转换、HDL代码规范等实用技巧,帮助开发者高效完成CPLD项目开发。

weixin_29193259的博客 502

IO流以及他们的种类区别 序列化反序列化 如何实现

Java 中有几种类型的流 按照流的方向:输入流(inputStream)和输出流(outputStream)。 按照实现功能分:节点流(可以从或向一个特定的地方(节点)读写数据。如 FileReader)和处理流(是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如 BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装...

weixin_45151960的博客 397

告别GUI点点点:Formality形式化验证的TCL脚本自动化实战(附完整脚本)

本文详细介绍了如何通过TCL脚本实现Formality形式化验证的全流程自动化,显著提升验证效率并降低错误率。内容涵盖脚本框架解析、参数化设计、验证报告生成及团队协作策略,特别适合芯片设计工程师摆脱传统GUI操作,实现300%以上的效率提升。

weixin_33737134的博客 283

io流 序列化和反序列化

Java文件读写 java文件基本操作 文件类File 常用方法: 方法名 含义 boolean creatNewFile 创建文件 boolean exists 判断文件是否存在 String getAbsolutePath 获取文件的绝对路径 String getName 获取文件名 String getParent 返回此File对象的上一级目录,如果没有上一级目录,则返回null String get

wuzhangxiong123的博客 281

手把手教你用二茂铁催化剂搞定醇的动力学拆分(保姆级实验避坑指南)

本文详细介绍了使用平面手性二茂铁催化剂进行醇的动力学拆分的全流程,包括催化剂选择与制备、反应体系搭建与条件优化、实时监测与反应淬灭、产物分离与纯化等关键步骤。通过实战案例和避坑指南,帮助实验人员实现>98% ee的拆分效果,特别适合需要高光学纯度二级芳基醇或烯丙醇的研究者。

weixin_30500105的博客 435

DrissionPage实战:5分钟搞定京东滑块验证码自动登录(附完整轨迹生成代码)

本文详细介绍了如何使用DrissionPage工具实现京东滑块验证码的自动化登录,包括环境配置、滑块缺口识别、拟人化轨迹生成算法及完整登录流程。通过物理运动学模型和智能识别技术,有效提升验证码破解成功率,适用于电商自动化场景。

weixin_29229055的博客 244

Java IO流 、序列化与反序列化

使用File、IO流操作文件,创建文件、文件夹,复制粘贴,剪切功能的实现,读写文件,对象的序列化与反序列化等

m0_48895748的博客 799

【扣子AI开发】如何开发一个图像生成智能体?

【扣子AI开发】如何开发一个图像生成智能体,从创建到发布

tl437002770的博客 2427

Java IO流 序列化和反序列化

序列化 Java InputStream和OutputStream ObjectInputStream/ObjectOutputStream 上传下载序列化文件

morphhy的博客 944

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java IO流学习—序列化与反序列化

Java IO流学习—序列化与反序列化 1、序列化与反序列化是什么 序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在IO流中,序列化就是将对象的状态写入到特定的流中的过程,如:将Java对象序列化为二进制的字节序列。 反序列化就是序列化的反过来的过程。 2、序列化和反序列化中使用到IO流的类 1)序列化IO流(ObjectOutputStream) 序列化是将对象转换为流的过程,应该对应的就是输出流,使用的是ObjectOutputStream类 链接: Obje

a18211246446的博客 448

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Java】Java中的IO流概念Java 中 IO 流分为几种?BIO、NIO、AIO,Object 有哪些方法?获取类Class对象的方式?序列化和反序列化?

AIO 是异步IO的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出CloneNotSupportedException 异常,深拷贝也需要实现 Cloneable,如果其成员变量为引用类型的也需要实现 Cloneable,然后重写 clone 方法。该方法使用频率非常高。中的某个线程(同步队列中的线程是给抢占 CPU 的线程,等待队列中的线程指的是等待唤醒的线程)。

2301_79456272的博客 1721

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java IO流-输入输出、序列化与反序列化、标准输入输出、打印流等

文章目录1. 数据输入输出流2. 内存操作流3. 打印流4. 标准输入输出流5. 随机访问流6. 序列化流与反序列化流7. Properties集合8. SequenceInputStream9. 压缩流与解压流 1. 数据输入输出流 概述 用来对Java中的基本数据类型进行操作 可以写基本数据类型,也可以读基本数据类型 分类 数据输入流 DataInputStream 数据输...

qq_44495081的博客 497

Java_IO流(二十五)—— Properties类、序列化流与反序列化流、打印流、 commons-IO

第一章Properties类 1.1Properties类介绍 Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。 特点: 1、Hashtable的子类,map集合中的方法都可以用。 2、该集合没有泛型。键值都是字符串。 3、它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。 4、有和流技术相结合的方法。 loa...

qq_40243295的博客 309

Java--IO流;File类;文件、目录拷贝;序列化与反序列化;Properties

一、IO流 IO流用来处理设备之间的数据传输 数据传输是需要通道的,而IO流就是数据传输的通道;因此IO流可以形象的比喻为运送货物的传输带 I : Input O : Output 通过IO可以完成硬盘文件的读和写 二、流分类 1、按流向 输入流 和 输出流 以内存作为参照物, 从外部读取到内存中,叫做输入(Input),读(Read)到内存;如:InputStream 从内存中读取出来,叫做输出(Output),写(Write)进硬盘;如:OutputStream 2、按操作的数据类

MinggeQingchun的博客 585

java——序列化的反序列化 和 IO 流 和 单例模式下将信息存储到properties文件中

1.序列化反序列化 为什么要序列化? 因为在保存一个对象或者大型数据类型时,因为平台的不同(比如操作系统不同),需要通过网络传递时,需要适应对方的环境或者网络的协议,要将对象的数据转化成一种标准的字节流序列,从而能在其他平台还原出来和符合网络传输的要求。 所有分布式应用常常需要跨平台,跨网络,因此要求所有传的参数、返回值都必须实现序列化。 序列化:把Java对象转换为字节序列的过程。序列化之后...

dts_121526的博客 226

从0开始学java-day25:IO流-Properties集合、序列化流与反序列化流、打印流、commons-IO

今日内容介绍1、Properties集合2、序列化流与反序列化流3、打印流4、commons-IO 01Properties集合的特点 * A: Properties集合的特点 * a: Properties类介绍 * Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串 * b: 特点 * Hashtable的子类,map集合中的方法都可以用。 * 该集

weixin_48583602的博客 209

【Java学习|黑马笔记|Day21】IO流|缓冲流,转换流,序列化流,反序列化流,打印流,解压缩流,常用工具包相关用法及练习

本文分享了Java IO流中缓冲流,序列化流,打印流,解压缩流,常用工具包相关应用和练习

2401_87144364的博客 1053

Java基础day14:IO流:转换流、打印流、合并流、反序列化

静态成员不能被序列化transient修饰的成员会被忽略被Serializable接口修饰的类在被编译为.class时会被标记一个独一无二的serialVersionUID, 利用这个id在反序列化时进行检查,保证只有完全一致的类才能反序列化,从而保证安全性。我们也可以自己定义serialVersionUID,从而自己控制序列化和反序列化的安全检查,实现, 在类只有轻微改动的情况下,仍然可以实现反序列化的功能。

weixin_62189092的博客 709

Java—Reader,Writer,InputStream,OutputStream,缓冲IO流,转换流,数据IO流,序列化与反序列化,try...catch

IO 概述 (1)如果对于File对象来说,输入输出流只能针对文件,不能针对目录 (2)IO操作不仅仅是针对文件,还可以从网络中输入输出 (3)输入输出的参照物是当前程序 IO的分类 (1)按方向 输入流(InputStream):将数据从某个源流向程序中 输出流(OutputStream):将数据从程序往外发送到某个目的地 (2)按操作数据的单位 字节流:适用于任何类型的文件,但如果是纯文本文件用字符流更快 字符流:只能用于读/写纯文本数据(内容全部是字符),纯文本文件:.txt,.html,.xml,

shiranjiu的博客 231

Java IO流之序列化和反序列化

为什么要进行序列化和反序列化? 当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的。如何做到呢?这就需要Java序列化与反序列化了。换句话说,一方面,发送方需要把这个Java对象转换为字节序列,然后在网络上传送;另一方面,接收方需要从字节序列中...

qq_34848299的博客 188

java io序列流_javaIO流-(十)对象流、序列化与反序列化

一、相关内容二、IO流体系IO流体系三、对象流:处理流的一种ObjectInputStream和OjbectOutputSteam用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来序列化:用ObjectOutputStream类保存基本类型数据或对象的机制反序列化:用ObjectInputStream类读取基本类型数据或...

weixin_28340315的博客 133
上一篇: java类加载机制
下一篇: 深入理解java对象的创建过程:类的初始化和实例化
冷静BB
博客等级 码龄12年 298粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值