一、流的介绍
-
概念:内存与存储设备之间传输数据的通道。
-
水借助管道传输;数据借助流传输。
-
分类:按方向
-
输入流:将<存储设备>中的内容读入到<内存>中
-
输出流:将<内存>中的内容写入到<存储设备>中
-
-
分类:按单位
-
字节流:以字节为单位,可以读写所有数据
-
字符流:以字符为单位,只能读写文本数据
-
-
分类:按功能
-
节点流:具有实际传输数据的读写功能
-
过滤流:在节点流的基础之上增强功能
-
二、字节流
-
字节流的父类(抽象类):
-
InputStream:字节输入流(存储->内存)
-
public int read(){}
-
public int read(byte[] b){}
-
public int read(byte[] b,int off,int len){}
-
-
OutputStream:字节输出流(内存->存储)
-
public void write(int n){}
-
public void write(byte[] b){}
-
public void write(byte[] b,int off,int len){}
-
-
三、文件字节流
-
FileInputStream:
-
public int read(byte[] b); //从流中读取多个字节,将读取到的内容存入b数组,返回实际读到的字节数;如果达到文件的尾部,则返回-1
-
单个读取的时候需要定义一个int 来存储读取到的数据,int返回每次读取到的数据,结束读取的条件是int =-1
-
多个读取的时候需要定义一个byte[] 来存储读取到的数据,数组的大小为每次读取的个数,int 返回每次读取的个数,读取的结束条件是int = -1
-
-
FileOutputStream:
-
public void write(byte[] b); //一次写多个字节,将b数组中所有字节写入输出流
-
每次写入都会覆盖,如果不想覆盖,需要在初始化FileOutputStream时传入true
-
四、字节缓冲流
-
缓冲流:BufferedInputStream/BufferedOutputStream
-
提高IO效率,减少访问磁盘的次数
-
数据存储在缓冲区中,flush是将缓冲区的内容写入文件中,也可以直接close
-