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

文章目录


前言

        在变量、数组和对象中储存的数据是暂时的,程序结束后它们就会丢失。如果想要永久地储存程序创建的数据,需要将其保存在磁盘文件中,这样就可以在程序中使用它们。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,可以接下来与博主共勉,欢迎在评论区中指正错误和讨论。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵果森森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值