我还想问一下字符流转换成字节流是怎么回事

 我来答
yh1234cc
推荐于2016-03-03 · TA获得超过146个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:111万
展开全部
1.首先2者的区别(你也可以查一下官方资料.比我说的更好)
在IO中所有的操作流里。字节流永远是最基础操作流。任何基于字节流的操作都是正确的。无论你是文本文件还是二进制的文件。
如果你操作的是纯文本文件,包括英文的和各种国家的文字,也包括中文,那么可以考虑用字符流。 由于编码不同,一个字符可能占用多个字节。
比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节。 所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行操作。
字符操作一般使用Writer,Reader等, 字节操作一般都是InputStream, OutputStream 以及各种包装类,比如BufferedInputStream和BufferedOutputStream等。

2.为什么要字符流转为字节流
因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取网络传输来的字符。

总结:如果你确认你要处理的流是纯文本文件,那么使用字符流会更方便,快捷。如果不确认,那么就使用字节流。
追问
可以用代码表示吗?
追答
我们首先创建了一个FileInputStream类的实例,然后转换为InputStreamReader对象is,最后使用BufferedReader进行包装。这样就可以将字节流转换为带缓冲功能的字符流

FileInputStream fis = new FileInputStream("D:/demo/test.txt");
InputStreamReader is = new InputStreamReader(fis);
BufferedReader bis = new BufferedReader(is);
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式