什么是字节流?html
字节流--传输过程当中,传输数据的最基本单位是字节的流。编码
什么是字符流?htm
字符流--传输过程当中,传输数据的最基本单位是字符的流。blog
字符编码方式不一样,有时候一个字符使用的字节数也不同,好比ASCLL方式编码的字符,占一个字节;而UTF-8方式编码的字符,一个英文字符须要一个字节,一个中文须要三个字节。get
个人理解是,传输的时候都是使用字节流,而后将这些字节流进行编码,例如传输的是中文,而后字节流使用UTF-8编码编码后,呈现为汉字。it
字节数据是二进制形式的,要转成咱们能识别的正常字符,须要选择正确的编码方式。咱们生活中遇到的乱码问题就是字节数据没有选择正确的编码方式来显示成字符。io
从本质上来说,写数据(即输出)的时候,字节也好,字符也好,本质上都是没有标识符的,须要去指定编码方式。字符编码
但读数据的时候,若是咱们须要去“看数据”,那么字节流的数据须要指定字符编码方式,这样咱们才能看到咱们能识别的字符;而字符流,由于已经选择好了字符编码方式,一般不须要再改了(除非定义的字符编码方式与数据原有的编码方式不一致!)乱码
在传输方面上,因为计算机的传输本质都是字节,而一个字符由多个字节组成,转成字节以前先要去查表转成字节,因此传输时有时候会使用缓冲区。二进制
经常使用的字节流(以Stream结尾):InputStream,OutputStream,FileInputStream,FileOutputStream、BufferedInputStream 、BufferedOutputStream
经常使用的字符流(以Reader、Writer结尾):Reader、InputStreamReader、FileReader、BufferedReader等
流这一块用的比较少,不太熟,能够多加练习。