什么是IO流?
IO流就是以流的方式进行输入输出
主要用来处理设备之间的传输,文件的上传,下载和复制
流分输入和输出,输入流从文件中读取数据存储到进程中,输出流从进程中读取数据然后写入到目标文件。
字节流的父类是:InputStream,OutputStream
字符流的父类是:Reader,Writer
字节流操作的基本单元为字节(8bit),可以通过字节操作所有数据;字符流操作的基本单元为Unicode码元,只能处理字符类 数据。
字节流默认不使用缓冲区;字符流使用缓冲区。
字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。
OutputStream里的write(byte b[], int off, int len)这个方法
write将指定字节传入数据源
Byte b[ ]是byte数组,b[off]是传入的第一个字符,我的理解就是数组的下标,b[off+len-1]是传入的最后的一个字符 ,len是数组的实际长度
流一旦打开就必须关闭,要使用close方法关闭,一般放在finally语句块中(finally 语句一定会执行)执行。多个流互相调用只关闭最外层的流即可。
I/O传输过程中的阻塞问题,传输时间长,访问磁盘次数过多。
通常提升磁盘I/O性能的方法有:
1:增加缓存,减少磁盘访问次数
2:优化磁盘的管理系统,设计最优的磁盘方式策略。这是在底层操作系统层面考虑的。
3:设计合理的磁盘存储数据块,以及访问这些数据块的策略。这是在应用层考虑的。可以给存放的数据设计索引,通过寻址输索引来加快和减少磁盘的访问量,还可以使用异步和非阻塞的方式加快磁盘的访问次数。