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,可以接下来与博主共勉,欢迎在评论区中指正错误和讨论。

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

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

相关文章

路径规划——搜索算法详解(三):RRT算法详解与MATLAB代码

本文讲解案例来自于古月学院,该篇也是对笔者学习内容的总结,有需要的朋友可以直接跳转到课程(新人福利8节课特惠价才12!不是广告哈,大家看需求选择,可以先看我的讲解。)。 前两篇我们介绍了Djk…

13.处理指定目录下的所有文件夹里的特定文件

1.命题要求 1)对于指定4K_phone目录下,有好几个文件夹,比如quality_15,quality_17,quality_19,等等quality_xx。获取每一个quality_xx文件夹里的1_teacher.txt。 例如,./4K_phone/quality_15/1_teacher.txt、./4K_pho…

基于nodejs+vue饮食分享平台python-flask-django-php

本系统采用了nodejs语言的express框架,数据采用MySQL数据库进行存储。进行开发设计,功能强大,界面化操作便于上手。本系统具有良好的易用性和安全性,系统功能齐全,可以满足饮食分享管理的相关工作。 前端技术&#xff…

前端面试题---->JavaScript

const声明的对象属性和数组的值可以被修改吗?为什么 原因:当使用const声明一个对象或数组时,实际上是保证了对象或数组的引用不会被修改,但对象或数组本身的属性或元素是可以被修改的。这是因为const只能保证指向的内存地址不变&a…

30---SDRAM电路设计

视频链接 SDRAM电路设计01_哔哩哔哩_bilibili SDRAM电路设计 1、SDRAM简介 SDRAM:Synchronous Dynamic Random Access Memory,同步动态随机存储器。 同步是指其时钟频率和CPU前端总线的系统时钟相同,并且内部命令的发送与数据的传输都以…

设计模式深度解析:深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 ✨

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 深入浅出的揭秘游标尺模式与迭代器模式的神秘面纱 开篇: 欢迎来到设计模式的神秘…

Leetcode 3.26

Leetcode Hot 100 一级目录1.每日温度 堆1.数组中的第K个最大元素知识点:排序复杂度知识点:堆的实现 2.前 K 个高频元素知识点:优先队列 一级目录 1.每日温度 每日温度 思路是维护一个递减栈,存储的是当前元素的位置。 遍历整个…

iphone11promax硬件参数

1.截图 2.震动和静音方面还是不行的 3.相关的电子参数信息 4.出处 【苹果iPhone 11 Pro Max 4GB/64GB/全网通参数】Apple iPhone 11 Pro Max 4GB/64GB/全网通手机参数_规格_性能_功能-ZOL中关村在线

批量删除 rabbitmq中随机队列

批量删除 amq.gen–* 随机队列 操作错误产生了无效随机队列,需要批量删除 过滤列出指定amq.gen–队列 # 列出 指定 vhost/qq 以amq.gen开头的所有队列 rabbitmqctl list_queues --vhost / | grep ^amq.gen-# 批量删除队列 #由于list_queues会列出队列名称以及对应…

2022 年甘肃省职业院校技能大赛 高职组 网络系统管理竞赛 网络构建模块试题

2022 年甘肃省职业院校技能大赛 高职组网络系统管理竞赛 网络构建模块试题 目 录 考试说明… 3 任务描述… 3 任务清单… 3 (一)基础配置… 3 (二)有线网络配置… 4 (三)无线网络配置… 6 (四&a…

找茬游戏小程序源码系统:封面广告+插屏广告 自带流量主低成本 带完整的安装代码包以及搭建教程

近年来,小程序市场持续火爆,各类小程序层出不穷。找茬游戏小程序作为其中的一种,以其独特的游戏形式和良好的用户体验,吸引了大量用户。然而,对于许多开发者和商家来说,开发一款高质量的找茬游戏小程序并非…

ArcGIS二次开发(一)——搭建开发环境以及第一个简单的ArcGIS Engine 程序

Arcgis10.2、Arcgis Engine10.2与Microsoft Visual Studio 2012的版本进行安装 1、推荐教程与安装包2、安装顺序3、安装成功测试VS新建项目可以创建ArcGIS项目,并且在VS中拖拽ArcGIS工具 4、搭建第一个简单的ArcGIS Engine 程序 ArcEngine和VS版本是有对应的&#x…