I/O(输入/输出流的概述)

文章目录

  • 前言
  • 一、流的概述
  • 二、输入/输出流
    • 1.字节/字符输入流
    • 2.字节/字符输出流
  • 总结

前言

        在变量、数组和对象中储存的数据是暂时的,程序结束后它们就会丢失。如果想要永久地储存程序创建的数据,需要将其保存在磁盘文件中,这样就可以在程序中使用它们。Java的I/O技术可以将数据保存到文本文档、二进制文件,甚至ZIP压缩文件中,以达到永久保存数据的要求。掌握I/O处理技术能够提高对数据的处理能力。


一、流的概述

        流是一组有序的数据序列,根据操作的类型,可分为输入流输出流两种。I/O流(输入/输出)流提供了一条通道程序,可以将源中的字节序列送到目的地。例如,使用java代码,获取/更改指定文本文档内容。

二、输入/输出流

         Java语言定义了许多类专门负责各种方式的输入/输出,这些类都放于 java.io包中。使用I/O技术,需要导入java.io包。其中所有的输入流类都是抽象类InputStream(字节输入流)抽象类Reader(字符输入流)子类;而所有的输出流类都是抽象类OutputStream(字节输出流)抽象类Writer(字符输出流)子类

1.输入流

        (1)字节输入流 

InputStrean抽象类的层次结构图

         InputStream类是字节输入流的抽象类是所有字节输入流的父类。该类中的所有方法遇到错误时都会引发IOException异常。

        以下是对该抽象类的方法介绍:

InputStream类的常用方法
方法功能描述
read()从输入流中读取数据的下一个字节。返回0~255范围内的int字节值。如果已经达到流末尾而没有可用的字节,则返回-1
read(byte[] b)从输入流中读出一定长度的字节,
mark(int readlimit)在输入流的当前位置放置一个标记,readlimit参数告知此输入流在标记位置失效之前允许读取的字节数
reset()将输入指针返回到当前所走的标记处
skip(long n)跳过输入流上的n个字节,并返回值为实际跳过的字节数
makeSupported()如果当前流支持mark()/reset()操作,就返回true
close()关闭此输入流并释放与该流关联的所有系统资源

        并不是所有的InputStream类的子类都支持InputStream中定义的所有方法。如skip()、mark()、reset()等方法只对某些子类支持。

         (2)字符输入流

        Java中的是Unicode编码,是双字节的。InputStream类是用来处理字节的,并不适用与处理字符文本。为此Java为字符文本的输入专门提供了一套单独的Reader类。Reader类是字符输入流的抽象类,所有字符输入流类都是Reader抽象类的子类

        Reader类是字符输入流的抽象类。

Reader抽象类的层次结构图 

 

         Reader类中的方法与InputStream类中的方法相似,可查看JDK文档。

2.输出流

        (1)字节输出流 

OutputStream类的层次结构图

        OutputStream类是字节输出流的抽象类此抽象类是所有字节输出类的父类OutputStream类中的所有方法均返回void,在遇到错误时会引发IOException异常。

        以下是对该抽象类的方法介绍: 

OutputStream类的常用方法
方法功能介绍
write(int b)将指定的字节写入此输出流
write(byte[] b)将b个字节从指定的byte数组写入此输出流
write(byte[] b,int off,int len)将指定byte数组中从偏移量off开始的len个字节写入此输出流
flush()彻底完成输出,并清空缓存区
close()关闭输出流

        (2)字符输出流

         Writer类是字符输出流的抽象类Writer类还是所有字符输出类的父类。

Writer类的层次结构图

 

         Writer类中的方法与OutputStream类中的方法相似,可查看JDK文档。 


总结

        以上就是关于java的I/O技术概述,本文粗略地描述了整体纲要,然而想要具体深入地学习I/O,可以接下来与博主共勉,欢迎在评论区中指正错误和讨论。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# 快速将数据写入 Excel 单元格

目录 性能问题 Excel元素结构及写入原理 范例运行环境 配置Office DCOM 实现代码 组件库引入 核心代码 WriteArrayToExcel 神奇的 911 事件 小结 性能问题 将生成或查询到的数据,导出到 Excel 是应用中常用的一项功能。其中一些标准的写入单元格的方法如…

Java与Go:文件IO

在软件开发中,文件IO是一项基本任务,涉及到从文件读取数据、向文件写入数据以及处理文件相关的异常等操作。在这篇文章中,我们将专注于比较两种流行的编程语言:Java和Go,在文件IO方面的异同点。 文件的打开与关闭 文…

uniapp实现单选组件覆盖选中样式

uniapp实现单选组件覆盖选中样式 完整代码&#xff1a; <!-- 是否选择组件: trueOfFalseChooseBtn --> <template><view class"is-true-body"><view class"btn-con" :class"isTrue ? btn-con-active : " click"clic…

Prototype

本题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网. 题目&#xff1a; 样例&#xff1a; 输入 168 输出 42 思路&#xff1a; 根据题意&#xff0c; 吸收怪物是 w * n &#xff0c;其中 怪物 n 一定是质数&#xff0c;并且 AlexMercer 可以变成 w 的任一因子。 从中…

《安富莱嵌入式周报》第335期:大量嵌入式书籍免费下载,CNC电机同步,智能家居比赛作品,EMF2024电子胸牌,Swift语言单片机编程,UDS Boot

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV151421Q7P4/ 《安富莱嵌入式周报》第335期&#xff1a;大量嵌入…

Python数据分析师工资怎么样?

在大数据时代&#xff0c;提到数据分析&#xff0c;就不得不提到Python&#xff0c;作为一门编程语言&#xff0c;Python用于数据分析时&#xff0c;能够带来很多的优势&#xff0c;这也是Python数据分析师现在受到欢迎的原因。Python数据分析师受到欢迎&#xff0c;相应地能够…

稀碎从零算法笔记Day26-LeetCode:跳跃游戏

断更多天&#xff0c;懒狗ex 题型&#xff1a;数组、模拟、类似双指针&#xff1f; 链接&#xff1a;55. 跳跃游戏 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组…

【漏洞复现】MaxView系统dynamiccontent.properties接口处存在RCE漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

如何使用route-detect在Web应用程序路由中扫描身份认证和授权漏洞

关于route-detect route-detect是一款功能强大的Web应用程序路由安全扫描工具&#xff0c;该工具可以帮助广大研究人员在Web应用程序路由中轻松识别和检测身份认证漏洞和授权漏洞。 Web应用程序HTTP路由中的身份认证&#xff08;authn&#xff09;和授权&#xff08;authz&…

C语言_第一轮笔记_指针

8.1 密码开锁 地址和指针 一般以变量所在的内存单元的第一个字节的地址作为他的地址NULL的值为0&#xff0c;代表空指针 指针变量的定义 类型名 *指针变量名类型名指定指针变量所指向变量的类型指针声明符*在定义指针变量时被使用&#xff0c;说明被定义的那个变量是指针指针变…

44 el-dialog 的 appendToBody 属性, 导致 vue 响应式失效

前言 我们经常会碰到 一些 模型和视图 不同步的问题 通常意义上 主要的问题为 列表的某响应式数据更新着更新着 后面就变成非响应式对象了, 然后 就造成了 数据一直在更新, 但是 视图的渲染后面就未渲染了, 这是一个由于 模型上的问题 导致的数据的不在响应式更新 又或者 是…

这些好玩的Ai网站你不知道我真的会哭

你可能想不到&#xff0c;AI已经发展到了这个程度。。文末提供 AI绘画关键词哦 目录 1.Midjourney 2.DeepFakes 3.StyleGAN 4.Runway AI绘画关键词哦 1.Midjourney Midjourney 是一款工具&#xff0c;更像是一位魔术师&#xff0c;但它的魔法来自人工智能技术的神奇。…

2024-03-26 Android8.1 px30 WI-FI 模块rtl8821cu调试记录

一、kernel 驱动&#xff0c;我这里使用v5.8.1.2_35530.20191025_COEX20191014-4141这个版本&#xff0c;下载这个版本的驱动可以参考下面的文章。 2021-04-12 RK3288 Android7.1 USB wifi bluetooth 模块RTL8821CU 调试记录_rk平台rtl8821cu蓝牙调试-CSDN博客 二、Makefile文…

P6学习:解析P6 WBS-工作分解结构的原则

前言 WBS&#xff0c;及Work Breakdown Structure&#xff0c;中文工作分解结构&#xff0c;是总结工作阶段的项目的层次结构分解。 WBS 就像项目的大纲——它将项目分解为特定的可交付成果或阶段。 然后将活动添加到这些层中以创建项目计划的时间表。 WBS 使用流程会有所不…

Hack The Box-Reminiscent

目录 基本信息 Resume.eml文件 imageinfo.txt flounder-pc-memdump.elf 检查内存镜像 进程 文件 get flag base64解码 基本信息 Resume.eml文件 ┌──(root㉿ru)-[~/…/ctf_quzheng_tools/timu/hackthebox/reminiscent] └─# cat Resume.eml Return-Path: <blood…

【4月】组队打卡《山有木Python特征工程极简入门》

活动名称 CDA Club 第2期《山有木兮Python数据分析极简入门》组队打卡 活动介绍 本次打卡活动由CDA俱乐部旗下学术部主办。目的是通过数据分析科普内容&#xff0c;为数据分析爱好者提供学习和交流的机会。方便大家利用碎片化时间在线学习&#xff0c;以组队打卡的形式提升学…

Transformer的前世今生 day08(Positional Encoding)

前情提要 Attention的优点&#xff1a;解决了长序列依赖问题&#xff0c;可以并行。Attention的缺点&#xff1a;开销变大了&#xff0c;而且不存在位置关系为了解决Attention中不存在位置关系的缺点&#xff0c;我们通过位置编码的形式加上位置关系 Positional Encoding&…

独享IP可以避免被封禁或限制访问的风险

在一些网站或服务中&#xff0c;存在对共享IP的封禁或限制访问的情况&#xff0c;这给用户带来了不便。而使用独享IP可以有效规避这一问题&#xff0c;保障用户正常访问需求。例如&#xff0c;在进行搜索引擎优化、社交媒体营销或广告投放时&#xff0c;独享IP可以确保用户的网…

第二证券策略:关注工程机械、新能源以及金融等行业的投资机会

第二证券认为&#xff0c;近来商场表现为高位题材股分解加剧呈现退潮痕迹&#xff0c;短期获利回吐压力较高&#xff0c;商场风格进行凹凸切换。人民币汇率短期呈现动摇&#xff0c;汇率商场呈现短期不合&#xff0c;但随着我国经济根本面预期的改进&#xff0c;外汇商场表现或…

SpringMVC面试题

1、SpringMVC执行流程 [参考内容&#xff1a;SpringMVC的执行流程] 2、常用注解及作用 2.1 Controller 名称&#xff1a;Controller类型&#xff1a;类注解位置&#xff1a;SpringMVC控制器类定义上方作用&#xff1a;设定SpringMVC的核心控制器bean范例 Controller publi…