黑马程序员技术交流社区

标题: 关于IO流 [打印本页]

作者: 雅望天堂    时间: 2014-5-30 09:05
标题: 关于IO流
InputStreamReader是字节流通向字符流的桥梁,而OutputStreamWriter 是字符流通向字节流的桥梁,这个桥梁有没有方向性,也就是说InputStreamReader是字节流-->字符流,而OutputStreamWriter是字符流---->字节流。有这个顺序么?如果有顺序,如下就有问题BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("out.txt")));这个最后一个括号中填的是new FileInputStream("out.txt"),正确。因为是字节流,要转换为字符流。
而BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));这个就不对了啊,System.out返回的明明是字节流,而OutputStreamWriter是字符流转字节流,矛盾啊。如何说法?请高手请教。

作者: 月光海    时间: 2014-5-30 09:40
你可以这样理解:OutputStreamWriter写的时候是字符,里面的目的地是字节流,这样就是字符流转字节流了。InputStreamReader是读取流,参数中最终的流是字节流,最后是以字符流的方式读出来的,就是字节流转字符流
作者: 铁血丹心    时间: 2014-5-30 09:59
⊙﹏⊙b汗,没看懂你想问什么
作者: 龙健    时间: 2014-6-1 01:43
我的理解是这样的,InputStreamReader和OutputStreamWriter导致你有误区的是他们的方向没有搞清楚,我是这样想的 ,InputStreamReader所带的参数指定的数据的来源是一个字节流,而OutputStreamWriter所带的参数不是是目的,目的是一个字节流,你在这里是把源和目的搞混淆了,System。out的确是字节流,这里所OutputStreamWriter是字符流---字节流的桥梁,就好像一个流向,System.out是目标,而不是源。。。。
作者: 沉默的爱    时间: 2014-6-1 03:13
InputStreamReader是字节流-->字符流,而OutputStreamWriter是字符流---->字节流
我觉得这个理解有点不太对!InputStreamReader是字节流-->字符流,,这个是对的!而这个OutputStreamWriter是字符流---->字节流,似乎是有点问题!我觉得吧而OutputStreamWriter,还是字节流-->字符流
个人理解,InputStreamReader是将用字节读取到的字节数据,转化为ASCII中的字符数据再传入系统,
而OutputStreamWriter是将以字节写出的数据转化为字符再进行输出!两个都是把字节转成了字符!!
小学生,不是很懂,不喜勿喷!


作者: GoodBoy123    时间: 2014-6-1 10:06
你在头两句就错了。InputStreamReader和OutputStreamWrtier都是把字节流转换为字符流.
BufferedWrtier和BufferedReader是带缓冲区的字符流,
  BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("in.txt")));是把文件操作的字李流转换为字符流,然后再包装成带有缓冲区的字符流。(往文件写)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));从键盘读)





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2