JAVA I/O中面向字节的InputStream和OutputStream以及面向字符的Reader和Writer简介
面向字节的操作为以8位为单位对二进制的数据进行操作,对数据不进行转换,这些类都是InputStream和OutputStream的子类.
面向字符的操作为以字符为单位对数据进行操作,在读的时候将二进制数据转为字符,在写的时候将字符转为二进制数据,这些类都是Reader和Writer的子类.
下面是JAVA示例代码:
其16进制的表示如下:a的16进制表示为61,"中"的16进制为E4 B8 AD
运行testInPutStream输出如下:
97为a的10进制表示,16进制的61和10进制的97转为二进制是相等的.
"中"的10进制为228 184 173,用byte表示为-28 -72 -83.
OutPutStream输出的时候,能接收的是int,或者byte数组,然后将其以二进制的数据输出.不要被本例的bos.write("中\r\n".getBytes("UTF-8"));所误导,这里指定编码是将"中"转成
以UTF8表示的byte数组.对同一个字符,不同的编码转换成的二进制数组可能是不一样的.
bos.write("中\r\n".getBytes("GB2312"));得到"中"的16进制表示为D6 D0.如下图
InputStreamReader需要指定编码,reader安照编码将二进制的多个字节转成一个字符.InputStreamReader有下面的一些read方法.
BufferedReader有下面的一些read方法.
OutputStreamWriter安照指定编码将字符转成二进制数据保存.OutputStreamWriter有下面的一些方法:



