关于java流的问题,字节流与字符流,为什么要用转换流,把字节转换成字符流,为什么不直接用字符流?
2个回答
展开全部
你好,很高兴为你解答。
正如你所说Java IO分两种流 1)字节流 InputStream OutputStream ;2)字符流 Reader Writer 。
为什么需要用两种流,而且要转换,不直接用字符流。
简单说来,就是字符流不能处理所有的情况,字节流也不能处理所有的情况。所以需要两种转换。
先说一下二者的区别:
1)字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,
2)而字节流处理单元为1个字节, 操作字节和字节数组。
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!
如果是 音频文件、图片、歌曲,就用字节流好点。
如果是关系到中文(文本)的,用字符流好点。
正如你所说Java IO分两种流 1)字节流 InputStream OutputStream ;2)字符流 Reader Writer 。
为什么需要用两种流,而且要转换,不直接用字符流。
简单说来,就是字符流不能处理所有的情况,字节流也不能处理所有的情况。所以需要两种转换。
先说一下二者的区别:
1)字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,
2)而字节流处理单元为1个字节, 操作字节和字节数组。
字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串; 字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以。
所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!
如果是 音频文件、图片、歌曲,就用字节流好点。
如果是关系到中文(文本)的,用字符流好点。
展开全部
一大好处就是字节流能通过转换流使用字符流的一些方法,如readLine方法,可以简化代码。
二是因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流,就是字节流。但是你想从他那里得到用户在键盘上的输入,只能是以转换流将
它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就
得给他套个InputStreamReader()用来读取网络传输来的字符。
其实就是弥补在某些时候字节流不能直接处理字符数据的缺陷。
二是因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流,就是字节流。但是你想从他那里得到用户在键盘上的输入,只能是以转换流将
它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就
得给他套个InputStreamReader()用来读取网络传输来的字符。
其实就是弥补在某些时候字节流不能直接处理字符数据的缺陷。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询