Java IO流的基本概念


1、按数据的流向可以分为

  输入流:InputStream、Reader     输出流:OutputStream、Writer

2、按数据的类型可以分为

  字节流    字符流

  字符流是在字节流的基础上加上编码(GBK、UTF-8等),形成的新数据量

  字节流支持声音、视频、文本、图片等所有的文件类型;而字符流只支持文本文件,如果用对含有汉字的文本文件进行字节流处理,编码和解码不一致的情况下,很有可能出现乱码

字节流

  输入流:FileInputStream   输出流:FileOutputStream

字节缓冲流

  输入流:BufferedInputStream   输出流:BufferedOutputStream

字符流:

  输入流:FileReader   输出流:FileWriter

字符缓冲流:

  输入流:BufferedReader   输出流:BufferedWriter

转换流:

  InputStreamReader:将字节输入流转换成字符输入流

  OutputStreamWriter:将字节输出流转换成字符输出流

  文件的复制本质上是先把磁盘中的文件读到内存中(程序),然后再把内存中的内容写到磁盘中去的过程

  注意:我在刚开始学习IO流的时候 ,脑袋里稀里糊涂,不懂啥是输入流,啥是输出流,经常概念搞不清楚;后来经过慢慢摸索,凡是带有Input词的必定是输入流、凡是带有Output词的必定是输出流;

      那字符流怎么理解呢,Reader是读的意思,把我们人脑比作计算机的内存,纸张比作是磁盘,那人平时读书的过程其实  就是纸张上的内容通过眼睛【读】进大脑里,给大脑记忆,这就是读进去的过程,必定是input的  所以带有Reader字眼的 一定是输入流

      Writer是写的意思,写的过程就是把你的所思所想用笔写到纸张上去,这是一个出的过程 output   所以带有Writer字眼的  必定是输出流

      这个过程是不是能够有助于理解和记忆呢,小弟还是菜鸟,有什么不对的地方  欢迎大家指正,一起学习