缓存流

缓冲流是来加快我们文件的输入输出速度的。

缓冲流的构造方法还是根据字节流来明确目的地,本质还是一个字节流,方法和字节流是一样的。

我们可以选择一个文件进行练习,并获得如下代码:

使用缓冲流的单字节的速度已经比之前的普通字节流单字节复制已经快了好多,使用缓冲流的字节数组进行复制文件将会大大的提高我们的复制效率。
我们也可以尝试一下字符缓冲流,字节流的换行是\r\n,在字符缓冲输出流有一个新的方法newline(),进行换行。
字符流复制的视频图片是打不开的。因为他不是一个文本文件,复制出来的会字节缺失。辨别文本文件和字节文件最简单的方法就是用文本的方式进行打开,打开后没有乱码可以看懂的话,就是文本文件。
文本文件可以用字节流和字符流进行复制,字节文件的话就只能用字节流。字节文件一般是不需要换行的,文本文件是需要换行的,所以字符缓冲流会有这个newline()方法和readline()方法读取一行。
我们创建一个多行的文本文件使用字符缓冲流进行复制操作;明确数据源的时候是一个字节输入流,传入转换输入流,再传入缓冲输入流,然后再进行一个文本行读取获得如下代码,顺便计算一下所花费的时间
所以我们总结了一下流的操作规律

明确一:要操作的数据是数据源还是数据目的。

源:InputStream    Reader

目的:OutputStream Writer

先根据需求明确要读,还是要写。

 

明确二:要操作的数据是字节还是文本呢?

源:

字节:InputStream

文本:Reader

目的:

字节:OutputStream

文本:Writer

已经明确到了具体的体系上。

 

明确三:明确数据所在的具体设备。

源设备:

硬盘:文件  File开头。

内存:数组,字符串。

键盘:System.in;

网络:Socket

目的设备:

硬盘:文件  File开头。

内存:数组,字符串。

屏幕:System.out

网络:Socket

完全可以明确具体要使用哪个流对象。

 

posted @ 2021-02-28 10:45  Dyl啊  阅读(107)  评论(0)    收藏  举报