IO流的分类:
* 流向:
* 输入流 读取数据
* 输出流 写出数据
* 数据类型:
* 字节流
* 字节输入流 读取数据 InputStream
* 字节输出流 写出数据 OutputStream
* 字符流
* 字符输入流 读取数据 Reader
* 字符输出流 写出数据 Writer
*
* 注意:一般我们在探讨IO流的时候,如果没有明确说明按哪种分类来说,默认情况下是按照数据类型来分的。
/
* 字节输出流操作步骤:
* A:创建字节输出流对象
* B:调用write()方法
* C:释放资源
*
public void write(int b):写一个字节
* public void write(byte[] b):写一个字节数组
* public void write(byte[] b,int off,int len):写一个字节数组的一部分
*/
FileOutPutStream写出数据实现换行和数据追加写入
FileOutputStream—加入异常处理的字节输出流操作
FileOutputStream—-读取文件数据
IO(字节流复制文本文件案例)
计算机是如何识别两个字节拼接成中文的
字节流复制文本文件(案例2)
字节流复制图片案例
字节流复制视频
FileInputSteram读取数据一次一个字节数组
FileInputSteram读取数据一次一个字节数组(复制文本文件)
BufferedOutputStream—* 写数据:BufferedOutputStream
通过定义数组的方式确实比以前一次读取一个字节的方式快很多,所以,看来有一个缓冲区还是非常好的。
* 既然是这样的话,那么,java开始在设计的时候,它也考虑到了这个问题,就专门提供了带缓冲区的字节类。
这种类被称为:缓冲区类(高效类)
* 写数据:BufferedOutputStream
* 读数据:BufferedInputStream
*
构造方法可以指定缓冲区的大小,但是我们一般用不上,因为默认缓冲区大小就足够了。
*
* 为什么不传递一个具体的文件或者文件路径,而是传递一个OutputStream对象呢?
- 原因很简单,字节缓冲区流仅仅提供缓冲区,为高效而设计的。但是呢,真正的读写操作还得靠基本的流对象实现。
自写版
BufferedInputStream—-读数据:BufferedInputStream
自写版
字节流四种方式复制速度对比
Original: https://www.cnblogs.com/ztg-java-xuexi/p/16079831.html
Author: ztgzqn
Title: IO(字节流的读写操作)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/571444/
转载文章受原作者版权保护。转载请注明原作者出处!