当前位置: 首页 > news >正文

1-38 流资源类结构

一 简介

1. Java中所说的流资源--IO流

2.为什么学习留资源? --要操作文件中的数据

 将数据写入指定的文件

 将数据从指定的文件读取

3.分类 -- 四大基流 , 八大子流 (重点)

 按照流向分 : 输入流 和输出流

 按照操作数据资源的类型划分

 字符流 (重点)

 Reader -- 字符输入流

  FileReader / BufferedReader

 Writer -- 字符输出流

 FileWriter / BufferedWriter

 字节流

 InputStream -- 字节输入流

 FileInputStream / BufferedInputStream

 OutputStream -- 字节输出流

 FileInputStream / BufferedInputStream

 子流类名 , 前缀表示该子流 操作的是什么 (File 文件 Buffered 缓存区) 后缀表示该子流属于那种流资源

 四大基流 都是抽象类 , 只用来参考 , 具体的实操需要通过子流完成

 字符流 -- 字符输出流系列 -- Writer这一体系

二 具体

1.Writer类设计

2.FileWriter类设计

3.常用方法

使用这种方式创建对象 如果没有直接创建 , 如果有 覆盖

 总结 : 适用于所有的IO流操作

 1 将对象声明写在 try块 外, 并赋值 null

 2 在try块中实例化对象 , 并编写操作数据资源的代码

 3 在finally中 编写关闭资源的代码 , 要先进行判空

 想要换行 怎么办

BufferWriter

①类设计

②常用方法 ---与Writer类同名的方法 用法一致

 

 Reader -- FileReader/BufferedReader

 中文解析 , 可能乱码 : 文件的编码集 与 系统的编码集 不一致 

 读一个的方法 是通过 计算机底层 游标指针 频繁在 文件和指定显示区域 之间移动  , 对内存资源消耗大 , 将所有的数据先读取到临时存储区域 ,  将区域中的内容整体显示 --读一组的方法

 上述代码 虽然降低了内存资源的消耗 , 但是定时字符数组 , 长度不好确定, 一旦过大 浪费内存空间 Java -- BufferedReader

 

 流总结

 在流中都定义操作数据的多种方法 

 Writer系列 (append(char c) write(int ch)) 写一堆 (write(String data) write(char[] ))

 Reader 系列 读一个 read() 读一堆 read(char[] /readLine())

 无论调用的是哪一种 , 实质上 调用计算机底层的 读一个或写一个

 字节流

 1 OutputStream -- 字节输出流

 FileOutputStream/BufferedOutputStream

 FileOutputStream 用来实例化对象

 上述代码既没有刷新 , 也没有 关闭资源 ,但是数据写入了

 计算机底层操作的是字节数据 , 流正好是字节流 , 可以直接将数据写入

 上述代码不能直接将数据写入 操作的是缓存区 因此需要将数据资源刷新到指定的文件中 , 实际开发中如果 真的 使用字节流 , 建议使用 BufferedOutputStream , 可以降低内存资源的消耗

 InputStream 字节输入流

 FileInputStream/BufferedInputStream

 

 ② BufferedInputStream 类

 字节流高效流 ()带有Buffered缓存技术的流 , 并没有像 字符高效流那样 , 提供高效方法 (newLine readLine)

 定义高效流原因 ,操作缓存区 来代替 直接操作计算机底层 , 降低系统消耗, 

 补充流

 1 转换流 

 InputStreamReader 将字节转化为字符

 OutputStreamWriter 将字符转换字节

 实际开发中用的少 替代体

 System.in

 System.out.print

 2 序列化和反序列化

 ① 序列化 : 使用指定的技术 将对象的数据存储在 指定的文件或通过网络上传的过程

 ② 反序列化 : 将指定的文件 或 网络上的对象中的数据 获取到

 ObjectOutputStream

 ObjectInputStream

 

 序列化 操作

上传数据 ,将数据以字节码的形式存储在文件中 

反序列化之后就能看懂了

 注意 ! ! !

 在类序列化过程中 , 如果添加了新的属性 

 修改对象之后 要进行一次序列化 , 避免反序列出现问题

相关文章:

1-38 流资源类结构

一 简介 1. Java中所说的流资源--IO流 2.为什么学习留资源? --要操作文件中的数据 将数据写入指定的文件 将数据从指定的文件读取 3.分类 -- 四大基流 , 八大子流 (重点) 按照流向分 : 输入流 和输出流 按照操作数据资源的类型划分 字符流 (重点) Reader -- 字符…...

nginx的前世今生(二)

书接上回: 上回书说到,nginx的前世今生,这回我们继续说 3.缓冲秘籍,洪流控水 Nginx的缓冲区是其处理数据传输和提高性能的关键设计之一,主要用于暂存和管理进出的数据流,以应对不同组件间速度不匹配的问题…...

浏览器跨域详解

一、什么是跨域 浏览器跨域是指当一个Web应用程序试图访问另一个协议、主机或端口不同的资源时,所发生的情况。这主要是由于浏览器的同源策略造成的,它是为了网站的安全而设置的安全限制,防止一个网站恶意访问另一个网站的资源。当然这是比较…...

华为5700配置

恢复出厂设置,清空配置 1、更改名字 system-view sysname tp-10-50-01-04 2、配置管理接口 int vlan 1 ip add 10.50.1.4 255.255.254.0 quit 2、链路汇聚 interface eth-trunk 1 mode lacp quit 3、绑定端口 interface eth-trunk 1 trunkport gigabitethernet …...

使用Axios从前端上传文件并且下载后端返回的文件

前端代码: function uploadAndDownload(){showLoading();const fileInput document.querySelector(#uploadFile);const file fileInput.files[0];const formData new FormData()formData.append(file, file)return new Promise((resolve, reject) > {axios({…...

open 函数到底做了什么

使用设备之前我们通常都需要调用 open 函数,这个函数一般用于设备专有数据的初始化,申请相关资源及进行设备的初始化等工作,对于简单的设备而言,open 函数可以不做具体的工作,你在应用层通过系统调用 open 打开设备…...

ue引擎游戏开发笔记(32)——为游戏添加新武器装备

1.需求分析: 游戏中角色不会只有一种武器,不同武器需要不同模型,甚至可能需要角色持握武器的不同位置,因此需要添加专门的武器类,方便武器后续更新,建立一个武器类。 2.操作实现: 1.在ue5中新建…...

【个人博客搭建】(17)使用FluentValidation 参数校验

FluentValidation 是一个用于 .NET 的开源验证库,它提供了一种流畅的接口和强类型验证规则,使得验证逻辑表达得更加清晰和简洁。(Apache-2.0) FluentValidation 的主要作用包括: 提高代码可读性:通过使用 F…...

数据结构===散列表

文章目录 概要散列思想散列函数散列冲突开放寻址法装载因子 链表法 代码Java小结 概要 散列表是一种很有趣的数据结构。 散列表是一个很有用的数据结构。它是数组演练而来的,又是一个基于数组的扩展的数据结构。接下来看看。 散列思想 散列表用的是数组支持按照下…...

10G MAC层设计系列-(2)MAC RX模块

一、概述 MAC RX模块的需要进行解码、对齐、CRC校验。 因为在空闲的时候10G PCS/PMA会一直向外吐空闲符(x07)所以需要根据开始符、结束符将有效数据从码流中截取,也就是解码。 因为开始字符的所在位置有两种形式,而结束字符的位…...

解码Starknet Verifier:深入逆向工程之旅

1. 引言 Sandstorm为: 能提交独立proof给StarkWare的Ethereum Verifier,的首个开源的STARK prover。 开源代码见: https://github.com/andrewmilson/sandstorm(Rust) L2Beat 提供了以太坊上Starknet的合约架构图&…...

【C++语言】类和对象--默认成员函数 (中)

文章目录 前言类的六个默认成员函数:1. 构造函数概念特性做了什么?易错注意:显式定义和默认构造函数 2. 析构函数概念特征做了什么?注意事项: 3.拷贝构造函数概念特征做了什么?注意事项: 4.赋值运算符重载…...

前端递归常见应用

概览 在 JavaScript 中,递归是一种编程技术,指的是函数直接或间接调用自身的过程。 递归通常用于解决可以分解为相同子问题的问题。通过不断地将问题分解成更小的、相似的子问题,直到达到某种基本情况(不再需要进一步递归的简单情…...

AI工具如何改变我们的工作与生活

AI工具在当今社会中扮演着越来越重要的角色,它们已经开始改变着我们的工作方式和生活方式。在接下来的2000字篇幅中,我将详细探讨AI工具如何影响我们的工作和生活。 AI工具在工作中的影响: 自动化和智能化生产流程: AI工具可以通…...

深入了解C/C++的内存区域划分

🔥个人主页:北辰水墨 🔥专栏:C学习仓 本节我们来讲解C/C的内存区域划分,文末会附加一道题目来检验成果(有参考答案) 一、大体有哪些区域?分别存放什么变量开辟的空间? …...

C++构造函数和析构函数的调用顺序

一般情况下,调用析构函数的次序正好与调用构造函数的次序相反,也就是最先被调用的构造函数,其对应的析构函数最后被调用,而最后被调用的构造函数,其对应的析构函数最先被调用。 当然对象的构造函数和析构函数调用时机和…...

智能家居1 -- 实现语音模块

项目整体框架: 监听线程4: 1. 语音监听线程:用于监听语音指令, 当有语音指令过来后, 通过消息队列的方式给消息处理线程发送指令 2. 网络监听线程:用于监听网络指令,当有网络指令过来后, 通过消息队列的方…...

Leetcode 3139. Minimum Cost to Equalize Array

Leetcode 3139. Minimum Cost to Equalize Array 1. 解题思路2. 代码实现 题目链接:3139. Minimum Cost to Equalize Array 1. 解题思路 这一题是一道hard的题目,而且看了一下答出率低的离谱,就一开始被吓到了,不过实际做了一下…...

【element-ui】el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题

el-table横向滚动后,通过is-scrolling-left获取滚动高度失效的问题 需求 现在有一个需求,需要监听el-table的纵向滚动,当滚动高度达到特定值时进行一些操作。 代码如下: methods:{throttledHandleScroll() {// 如果已经有定时器…...

JAVA中的日期

获取当前的日期 LocalDate LocalDate today LocalDate.now();System.out.println("今天是:"today);//今天是:2024-05-06String format today.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日"));System.out.println("今天是:"…...

一起了解开源自定义表单的优势表现

随着社会的进步和科技的发展,越来越多的中小企业希望采用更为先进的软件平台,助力企业实现高效率的流程化管理。低代码技术平台、开源自定义表单已经慢慢走入大众视野,成为一款灵活、高效的数字化转型工具。流辰信息专注于低代码技术平台的研…...

体育老师工资高吗,奖金有吗

教师的薪资水平与多种因素相关,包括教育经验、工作地点、学校类型以及个人的教学成果等。在讨论体育教师的工资问题时,不能仅仅关注数字,更应了解教育价值和个人发展。 初中体育教师的工资水平受多种因素影响。根据网络统计的数据&#xff0c…...

Linux驱动开发——(十一)INPUT子系统

目录 一、input子系统简介 二、input驱动API 2.1 input字符设备 2.2 input_dev结构体 2.3 上报输入事件 2.4 input_event结构体 三、代码 3.1 驱动代码 3.2 测试代码 四、平台测试 一、input子系统简介 input子系统是管理输入的子系统,和pinctrl、gpio子…...

大数据毕业设计Python+Django旅游景点评论数据采集分析可视化系统 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习 人工智能 计算机毕业设计

毕业论文(设计)开题报告 学生姓名 学 号 所在学院 信息工程学院 专 业 指导教师姓名 指导教师职称 工程师 助教 指导教师单位 论文(设计)题目 基于朴素贝叶斯算法旅游景点线上评价情感分析 开 题 报 告…...

FSNotes for Mac v6.7.1中文激活版:强大的笔记管理工具

FSNotes for Mac是一款功能强大的文本处理与笔记管理工具,为Mac用户提供了一个直观、高效的笔记记录和整理平台。 FSNotes for Mac v6.7.1中文激活版下载 FSNotes支持Markdown语法,使用户能够轻松设置笔记格式并添加链接、图像等元素,实现笔记…...

课程34:Windows Docker部署.Net Core项目

这里写目录标题 🚀前言一、安装Docker Desktop1.1 官网下载Docker1.2 安装Docker1.2.1 选择配置,默认都勾选1.2.2 安装中1.2.3 安装成功1.2.4 启动1.2.5 启动成功二、.Net Core 项目发布与部署2.1 修改Dockerfile文件2.2 Web项目发布2.3 修改配置2.3.1 修改dockerfile<...

分布式与一致性协议之ZAB协议(四)

ZAB协议 ZooKeeper是如何选举领导者的。 首先我们来看看ZooKeeper是如何实现成员身份的&#xff1f; 在ZooKeeper中&#xff0c;成员状态是在QuorumPeer.java中实现的&#xff0c;为枚举型变量 public enum ServerState { LOOKING, FOLLOWING, LEADING, OBSERVING }其实&…...

在M1芯片安装鸿蒙闪退解决方法

在M1芯片安装鸿蒙闪退解决方法 前言下载鸿蒙系统安装完成后&#xff0c;在M1 Macos14上打开闪退解决办法接下来就是按照提示一步一步安装。 前言 重新安装macos系统后&#xff0c;再次下载鸿蒙开发软件&#xff0c;竟然发现打不开。 下载鸿蒙系统 下载地址&#xff1a;http…...

Linux基础-socket详解、TCP/UDP

文章目录 一、Socket 介绍二、Socket 通信模型三、Socket 常用函数1 创建套接字2 绑定套接字3、监听连接4、接受连接5、接收和发送数据接收数据发送数据 6、关闭套接字 四、Socket编程试验1、源码server.cclient.c 2、编译&#xff1a;3、执行结果 五、补充TCP和UDP协议的Socke…...

【菜单下拉效果】基于jquery实现二级菜单下拉效果(附完整源码下载)

Js菜单下拉特效目录 &#x1f354;涉及知识&#x1f964;写在前面实现效果&#x1f367;一、涉及知识&#x1f333;二、具体实现2.1 搭建一级菜单2.2 搭建二级菜单项2.3 引入js文件2.4 构建CSS文件 &#x1f40b;三、源码获取&#x1f305; 作者寄语 &#x1f354;涉及知识 ht…...

wordpress 性能怎么样/百度合伙人官网app

Ruby 2.1.10 于去年3月底发布&#xff0c;此后 Ruby 2.1 系列的支持一直处于安全维护阶段。现在&#xff0c;一年过去了&#xff0c;这个阶段已经结束。自2017年3月31日起&#xff0c;Ruby 2.1 系列的所有支持都已结束&#xff0c;来自最新 Ruby 版本的 Bug 和安全修复将不再被…...

漯河哪里做网站/成都最新数据消息

来源&#xff1a;编程新说“中国最好面试官”自从上次写了一篇“【面试】我是如何面试别人List相关知识的&#xff0c;深度有点长文”的文章后&#xff0c;有读者专门加我微信&#xff0c;说我是“中国最好面试官”&#xff0c;这个我可受不起呀。我只是希望把面试当作是一次交…...

wordpress指定分类不显示/设计网站都有哪些

Cars [Link](Problem - E - Codeforces) 题意 给你nnn辆车在一个数轴上&#xff0c;和mmm个关系&#xff0c; 1.ab1.a\ b1.a b&#xff1a;a&#xff0c;b不会相交&#xff0c;2.ab2.a\ b2.a b&#xff1a;a&#xff0c;b会相交&#xff0c;要求你通过合理的安排每辆车朝向L…...

wordpress页面直接跳转/自媒体怎么入门

HashMap是常考点&#xff0c;而一般不问List的几个实现类(偏简单)。以下基于JDK1.8.0_102分析。JDK版本&#xff1a;oracle java 1.8.0_102内部存储HashMap的内部存储是一个数组(bucket)&#xff0c;数组的元素Node实现了是Map.Entry接口(hash, key, value, next)&#xff0c;n…...

抖音上做我女朋友网站/志鸿优化设计答案

UISwitch 是一个可以用于二选一选择的控件&#xff0c;它类似于一个开关&#xff0c;可以选择 off/on 。 UISwitch 创建 UISwitch 的创建方式即为继承于 UIView 的 initWithFrame 方法。 - (instancetype)initWithFrame:(CGRect)frame; 复制代码 但是要注意这个方法虽然传入一个…...

深圳企业网站制作公司查询/关键词优化快速

在设计数据库时到底要不要设计主外键&#xff1f; 大多数时&#xff0c;否定主外键的考虑角度一般是效率问题&#xff0c;但是在考虑到效率的同时是否考虑到了数据一致性呢&#xff1f;在保证数据一致性的前提条件下&#xff0c;才要去考虑效率问题&#xff08;数据存的都不准确…...