字节流,缓冲流,字符流

我觉得挺不错的解释
学习这个事情,学了容易忘,之前学的时候感觉自己很清晰地知道该怎么读写操作,等到隔了一阵子之后,想记一下这个知识点却发现已经忘得差不多啦。上面的那个连接讲得特别详细——针对字节流与字符流的,还是个大佬,替大家挖掘了一个大佬博客呢!好,接下来我来谈谈自己的理解。

在Java中一般会根据IO流把文件分为下面三类
1.字符文件
Reader与Writer:为字符流而设计,处理字符或者字符串
一个字符占两个字节
字符流处理单元为2个字节的Unicode字符,操作字符与字符数组,字符串。
2.二进制文件(字符文件与二进制文件都可以读写)
InputStream和Outputstream
字节流:FileInputStream和FileOutputStream(0-255的整数,8位)
字节缓冲流:BufferedInputStream和BufferedOutputStream
数据流:DataInputStream和DataOutputStream
对象流:ObjectInputStream和ObjectOutputStream

3.I/O的输入输出
输入:外部设备到程序(读取操作)InputStream
输出:从程序到外部设备(写操作)OutputStream

其实写到这里我还是比较懵逼的,主要是关于字符流与缓冲流的区别,终于,我在网上看到了一个可以理解的答案。
流的分类(两大类):字节流与字符流(各自有他们的输入流输出流)
字符流按照两个字节的读取字符,字符串(文字)等。

缓冲流:当输出的时候带有缓冲功能的流,BufferedReader和BufferedWriter——高效类。
缓冲区:
当我们每次调动read()与write()方法的时候,首先从得到那一行调用的方法的代码开始。程序存储在JVM中运行,那就穿出去,穿过计算机,到达外部设备或者文件,然后原路返回,这个过程相当的漫长(这造成我们需要花费大量时间等待外部设备的响应),所以,我们开辟了一个内存区域,就放在JVM里面,程序的旁边,程序每次调用读取方法的时候都是读写在这块内存区域,只有当缓冲区装满之后才会释放,但是我们可以明显感觉到,这大大提高了计算机的系统效率,字符流输出前都会保存在内存中的缓冲区中

还是想说一下,感觉自己也没有理得特别清楚,以后再补补。

猜你喜欢

转载自blog.csdn.net/chan_fan/article/details/84899318