本次主要是整理了今天所学习的IO流的知识内容,接下来我会将IO流分成几部分
一、什么是IO流
IO流首先是对属于Java.io包的统称,即在两个设备之间传输的数据,我们都将它称之为流。其本质就是数据的传输
二、IO流的分类
(1).按流向分类
在这里分为输入和输出流,而如何界定这个流是输入还是输出流呢,网上都是以内存作为中心即当数据从外部设备写入到内存中就是写入而从内存将记录写入到外部设备就是输出。
(2).按类型分类
字节流(InputStream/OutputStream)
字节流就是以字节为单位,在设备之间传播的流,即二进制的数据,而InputStream顾名思义就是向程序中写入数据。OutputStream则是将程序中的数据写出的。这两个类都隶属于IO流包下,如果想要实现它们的方法都不能直接实现它们,而要通过实现它们下面的子类来调用这些方法。**
字符流(Reader/Writer)
字符流则是以字符为单位,在设备之间传输的流,即字符为单位的数据。其中Reader为向程序中输入也可以理解为由硬盘→内存,而Writer则相反是由内存→硬盘,即输出的流。这两个类如果想要调用它们下面的方法也是无法直接调用,需要调用它们的子类来实现方法。
三、子类及其方法
字节输入流(InputStream)
FileInputStream
即把一个文件通过字节流的方式进行传输,实现对文件的操作,它的方法有:
read(int b)
该方法是读取文件中的字节数,每次读取一个字节,并最终返回该文件中的字节数量,以int为单位
read(byte b[])
该方法也是读取文件中的字节数,每次读取的字节数以byte数组的单位长度数量,并最终返回int类型的字节数量
read(byte b[], int off, int len)
从该输入流读取到字节数据,放入一个字节数组中。off表示数据中的起始偏移量,len表示要写入的字节数
close()
该方法用于关闭当前流,因为当你调用虚拟机以外的资源时,虚拟机无法处理这些资源,需要你添加close方法手动清理这些资源
available()
这个方法可以在读写操作前先得知数据流里有多少个字节可以读取,即文件目前的大小
FilterInputStream
用于过滤输入流,从而为基础流提供一些额外的功能 ByteArrayInputStream
在内存中创建了一个字节数组,将输入流中读取的数据保存到字节数组的缓存区中 StringBufferInputStream
把一个String对象作为InputStream
未完待续…