Java复习02 IO流

Java复习02 IO流

首先,“IO”在计算机里面代表的是“输入/输出”(Input / Output),简单来说,就是计算机与外部世界进行数据交流的过程。比如,你在键盘上敲字,数据就输入到计算机里了,屏幕上显示出来的东西,就是输出。在Java中,IO流是用来处理这种数据输入和输出的工具。

IO流在Java里面可以分为四个主要类型:字节流(InputStream和OutputStream)、字符流(Reader和Writer)、节点流(Node Streams)和 处理流(Processing Streams)或者叫做包装流(Wrapper Streams)。

1. 字节流:

  • InputStream:这是用来读取数据的,比如从文件中读取数据,它是以字节的形式读取的,就像用水管一样,一点一点水(数据)从源头流过来。
  • OutputStream:跟InputStream相对,这是用来写数据的,比如把数据写入到一个文件里,也是一字节一字节地写。

2. 字符流:

  • Reader:这个是专门用来读取字符的,因为文本文件里的文字,实际上是以字符的形式存储的。Reader就像是专门读书的眼睛,能够一眼一眼地读文字。
  • Writer:对应于Reader,Writer是用来写字符的。它就像是在写日记,把你的故事一字一句地记录下来。

3. 节点流:

  • 节点流也叫做低级流,它直接与数据的来源或目的地连接。比如,如果数据来自一个文件,那么FileInputStreamFileOutputStream就是节点流,它们直接和文件系统中的文件交互。同样的,FileReaderFileWriter是处理文本文件的节点流。
  • 可以把节点流想象成水龙头,直接接在水管上的那个出水口,可以直接控制水的流向。

4. 处理流 或者 包装流:

  • 处理流是建立在节点流之上的。它们用于对数据进行处理,比如缓冲、格式化、压缩、加密等等。处理流的例子包括BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter等。这些流内部使用了节点流,但它们提供了更高级的数据处理功能。

  • 处理流就像是一个水滤器或者加热器,水通过水滤器可以过滤掉杂质,通过加热器可以变热,但最终这个水还是要从水龙头出来的,这就是处理流对节点流的包装。

所以,当在处理数据的时候,通常会首先建立一个节点流来和数据源或目的地直接连接,然后再套上一个或多个处理流来提升性能或者功能。这种设计允许我们通过不同的处理流的组合来轻松地扩展功能,而不需要改变已有的节点流。就像是可以根据需要选择不同的滤水器和加热器来处理水质和水温,而不需要每次都去改动整个水管系统。

在这里插入图片描述

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

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

相关文章

深入理解Spring的ApplicationContext:案例详解与应用

深入理解Spring的ApplicationContext:案例详解与应用 在Spring框架的丰富生态中,ApplicationContext扮演着至关重要的角色。作为BeanFactory的扩展,ApplicationContext不仅继承了其所有功能,还引入了更多高级特性,使得…

一文搞懂dataclass和field

目录 1. 背景2. dataclass函数签名详解2.1 repr示例2.2 eq与order示例2.3 frozen示例2.4 __post_init__2.5 继承 3. Field3.1 default与default_factory3.2 init与repr3.3 compare3.4 metadata Ref 1. 背景 考虑这样一个场景。假如我们要定义一个 Person 类,并希望…

FastAPI 是什么?深入解析

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建基于 Python 的 API。它是一个开源项目,基于 Starlette 和 Pydantic 库构建而成,提供了强大的功能和高效的性能。 FastAPI 官网地址:fastapi.tiango…

《软件工程》复试问答题总结

软件系统的三个测试阶段: 第一阶段:发现和解决BUG 集中在发现bug,考研测试设计能力,发现bug之后如何清晰表述定级,以及验证,之后举一反三尽早发现更多类似bug 第二阶段:质量的管理 多做质量数据…

Vue3自定义指令!!!

通过自定义指令实现菜单显示和权限控制问题。 一、新建一个在src目录下创建包directives,在包中创建一个ts文件。 import { useStore } from "/store/pinia";function hasRoles(role: any) {const pinaRoles useStore().roles;if (typeof role "s…

【RPG Maker MV 仿新仙剑 战斗场景UI (四)】

RPG Maker MV 仿新仙剑 战斗场景UI 四 三级战斗指令菜单效果代码完成效果 下篇预告 三级战斗指令菜单 仙剑1中三级战斗的菜单内容如下:使用、投掷、装备这三项。 效果 在RMMV中原始菜单中是没有这三级菜单的,因此需要重新进行添加进去。 代码 这里贴…

分布式思想

1、单体架构设计存在的问题 传统项目采用单体架构设计,虽然可以在一定的程度上解决企业问题,但是如果功能模块众多,并且将来需要二次开发.由于模块都是部署到同一台tomcat服务器中,如果其中某个模块代码出现了问题,将直接影响整个tomcat服务器运行. 这样的设计耦合性太高.不便…

19.ADC模数转换器知识点+AD单通道AD多通道应用程序示例

0. 江协科技/江科大-STM32标准库开发-各章节详细笔记-查阅传送门_江协科技stm32笔记-CSDN博客文章浏览阅读2.9k次,点赞44次,收藏128次。江协科技/江科大-STM32标准库开发-各章节详细笔记-传送门至各个章节笔记。基本上课程讲的每句都详细记录&#xff0c…

Python转C++的童鞋看这里

一、前言 Python学完了,很多人都去学了C。在学习C之前,建议大家先打好基础,对C和Python的区别先了解了解,会对后续的C学习提供很大的帮助。 二、特点区分 1. Python Python是一种简单而高效的语言,它已经帮你封装好了…

Python-OpenCV-边缘检测

摘要: 本文详细介绍了Python-OpenCV的边缘检测技术,包括基础知识回顾、功能实现、技巧与实践、常见问题与解答等,为读者提供了全面深入的教程。 阅读时长:约60分钟 关键词:Python, OpenCV, 边缘检测, Canny, Sobel …

群晖 Synology Photos DSM7 自定义文件夹管理照片

背景 众所周知,目前群晖DSM7中使用Synology Photos做照片管理时,个人照片只能默认索引 /home/Photos 文件夹,但是如果个人照片很多或者用户很多时,共享文件夹/homes 所在的存储空间就会不够用 当然,如果你的存…

李彦宏“程序员将不再存在”言论被周鸿祎驳斥,网友怒怼:先把百度程序员都开除了

在 3 月 9 日央视的《对话》开年说节目上,百度创始人、董事长兼 CEO 李彦宏表示,基本上以后不会存在“程序员”这种职业了,因为只要会说话,人人都会具备程序员的能力。 “未来的编程语言只会剩下两种,一种叫做英文&am…

Python和RPA之间的区别和联系

Python是实现RPA的工具之一,且RPA要复杂的多,远不是会Python这么简单。 要理解RPA和Python的区别,先看它们各自做什么。 1、什么时候会用到RPA? 比如你的财务同事需要做财务对账,发票报销,税务申报等&…

【刷题训练】LeetCode125. 验证回文串

验证回文串 题目要求 示例 1: 输入: s “A man, a plan, a canal: Panama” 输出:true 解释:“amanaplanacanalpanama” 是回文串。 示例 2: 输入:s “race a car” 输出:false 解释:“rac…

C#常用数据操作方法详解

文章目录 C#常用数据操作方法详解字符大师:String类的使用艺术字符串截取:Substring示例寻找字符串:IndexOf示例字符串替换:Replace示例字符串分割:Split示例转小写:ToLower示例 数学机械师:Mat…

Java 设计模式系列:行为型-观察者模式

简介 观察者模式是一种行为型设计模式,又被称为发布-订阅(Publish/Subscribe)模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。 观察者…

全面解析 Axios 请求库的基本使用方法

Axios 是一个流行的基于 Promise 的 HTTP 请求库,用于在浏览器和 Node.js 中进行 HTTP 请求。它提供了简单易用的 API,可以发送各种类型的请求(如 GET、POST、PUT、DELETE等),并处理响应数据,Axios 在前端工…

MySQL常见的数据类型

一、数值型 5 种整型 tinyint、smallint、mediumint、int 和 bigint,主要区别就是取值范围不同,还可以在类型前添加一个 限制词 unsigned,不允许添加负数。 3 种浮点型:不能精确存放 float 和 double,可以精确存放 de…

朋友,代码库的“健身方案”要不要了解一下?

你有没有想过,你的代码库可能正面临“健康危机”—— 代码臃肿、低效交付、BUG隐藏、潜藏的安全风险…… “健身达人”上线 如果你的开发、安全和运维团队像是三位“健身达人”,那么极狐GitLab的DevSecOps线上成熟度评估,就是他们的“健身教…

09、用数据变量等控制 vue 项目标签中 CSS 样式的五种方法

通过 vue 中的变量值控制标签/组件样式 Ⅰ、通过 Vue3 的数据变量来控制 h1 标签样式:1、代码为:2、截图为: Ⅱ、通过 vue3 的 computed 来控制 h1 标签样式:1、代码为:2、截图为: Ⅲ、通过 vue3 的 comput…