当前位置:网站首页>2022-08-09 第六小组 瞒春 学习笔记
2022-08-09 第六小组 瞒春 学习笔记
2022-08-10 09:03:00 【烫嘴的辛拉面】
前言
好高骛远的一无所得,埋头苦干的获得知识。 百艺通,不如一艺精。
Java基础已经一步步接近尾声,我们从过去的理解、看懂应该进不到逐渐有了自己的思想。每一个问题有自己的想法,如果没有,或许是敲的代码不够多,或许是思想还不够成熟,但终有一天我们要独当一面,希望各位砥砺前行,脚踏实地。
今天继续进行IO流的学习
️IO流(输入输出流)
️流的区分
File类不能操作文件的内容
1.按照流向分:
输入流:从物理内存(硬盘)中读取数据到内存 (读)
输出流:从内存写出数据到硬盘 (写)
一个文件在传输过程中经历多次拷贝,IO的性能本身很低
零拷贝、Nio
2.按照操作单元分:
字节流:是一个字节一个字节的操作。二进制操作。操作任意类型的文件。
字符流:是一个字符一个字符的操作。一个字符两个字节,主要用来处理文本文件
.txt,.java,.py,.xml…
3.按照角色划分:
节点流:直接操作一个特定的IO设备
处理流:在节点流的基础上,做进一步的处理。
在Java中输入/输出流常用的流:

️流的使用:
输入流:就是一点一点的往内存中读数据
字节输入流:
1.创建一个FIleInputStream对象
2.定义一个标记,用来控制输入流的读取
3.循环读取,如果读取到了-1,说明文件到了末尾
4.关闭资源
注意:我们发现一个流读完了就没有了,不能再读了
当一个流读完之后,会默认调用mark和reset方法来进行记录和重置,这个流就已经重置到了上次读完的位置,所以就无法再次读取内容。并不是读完一次就关了流。
字节输出流:
FileOutputStream构造器:
boolean append参数:如果传入true,则代表在原有基础上追加,不覆盖。如果传入false,或者不传,覆盖原有内容
写的操作,目标文件如果不存在会自动新建
文件的复制
两个流:
FileInputStream:把对应文件的内容读取出来
FileOutputStream:把读到的内容写出去
read(byte[])
write(byte[])
多个流同时使用时,关闭顺序,先用的流后关,后用的先关
catch中IO去掉 保留Exception e 可以使得所有异常都处理
在jdk1.7之后,很多资源类都实现了AutoCloseable接口,包括常见的流,FileINputStream
FileOutputStream…
可以在try定义资源,并会主动释放资源
可读性低,尽量不使用
字符流:
仅需了解
️字符处理流(常用)
缓冲流
直接操作字符串
只能处理纯文本文件
处理流,内层流,关闭了外层的流,内层的流随之关闭
序列化与反序列化
序列化:将对象写入到IO流中,将内存模型的对象变成字节数字,可以进行存储和传输
反序列化:从IO流中恢复对象,将存储在硬盘上或者从网络中接受的数据恢复成对象模型。
使用场景:所有可在网络上传输的对象,都必须是可序列化的,否则报错,所有保存在硬盘上的对象也必须要序列化。
Seriallizable:序列化接口
序列化版本号:写出去的User类和读的不同 反序列化必须拥有class文件,随着项目升级,class文件也会升级 序列化需要保证升级后的兼容性
java序列化提供了一个版本号
版本号可以随便指定,如果不指定,jvm会根据类信息自己计算,无法匹配,报错
不指定版本号,有隐患,不利于JVM的移植
先锁定一个文件 Object
把一个对象写出去:
读
️总结
1.所有需要网络传输的对象都需要实现序列化接口
2.对象的类名,实例变量都会被序列化;方法,类变量不会被序列化
3.如果想让某个变量不变序列化,可以用transient修饰
4.序列化对象的引用类型成员变量
5.反序列化时必须由序列化对象的class文件
6.如果同一个对象被序列化多次,只有一次序列化为二进制流,以后都只是保存序列化的版本号
天涯海角悲凉地
记得当年全盛时
边栏推荐
- ARM Architecture 2: Processor Core and Assembly Instruction Set
- [Learn Rust together | Advanced articles | RMQTT library] RMQTT message server - installation and cluster configuration
- iwemeta metaverse: a doll sells for 9999 yuan, and Bubble Mart thinks it is not expensive at all
- 打工人的第27天-平凡但不平淡的日子
- navicat导入SQL文件报:[ERR] 2006 - MySQL server has gone away [ERR] -- MySQL dump 10.13 Distrib 5.7.34
- Optimistic and pessimistic locking
- 【API 管理】什么是 API 管理,为什么它很重要?
- js reads excel time format conversion
- 并查集学习
- PTA Exercise 2.2 Rotate an Array Left
猜你喜欢
原型和原型链

How AliExpress sellers seize product search weight

JWT: To own me is to have power

Delphi实现的一个文件在线查询显示下载功能

微信小程序--》小程序生命周期和WXS使用

CAD to WPF: Tips on converting CAD drawing files to WPF vector code files (xaml files)

DAY25:逻辑漏洞

英伟达游戏显卡营收暴跌/ 谷歌数据中心爆炸致3人受伤/ iPhone电量百分比回归…今日更多新鲜事在此...

DAY25:逻辑漏洞复现

郭晶晶家的象棋私教,好家伙是个机器人
随机推荐
m.bjhjwy.com全面教学设备 类型包括: 教学仪器, 教学设备 ,
Hugo NexT主题升级记录
【FAQ】【Push Kit】推送服务,回执配置一直报错、回执过期修改、怎么删除配置的回执
PTA Exercise 2.1 Simple Calculator
【数据库架构】OLTP 和 OLAP:实际比较
基于sklearn的决策树应用实战
多线程浅谈
UGUI—事件,iTween插件
Rust learning: 6.5_Array of composite types
ARM体系结构2:处理器内核和汇编指令集
【API架构】使用 JSON API 的好处
1499. The maximum pile.then/deque
日期类(暑假每日一题 19)
多线程知识点总结之温故而知新
The first offline workshop in 2022!Data application experience day for application developers is coming | TiDB Workshop Day
shell------ commonly used gadgets, sort, uniq, tr, cut
shell之函数和数组
【业务架构】价值链分析:提高客户价值和盈利能力
不同的命令行风格
[Metaverse Omi Says] Listen to how Rabbit Fan Rabbit creates a new era of trendy play from virtual to reality
