请问下InputStreamReader,OutputStreamWriter在什么时候使用呢?

2016-06-16 05:52:53
InputStreamReader可以理解一些,比如一些地方只能传输字节,不能传输字符,那么我就只能够将文件以字节的格式进行传入 。
之后我在程序中将这些字节数据转换成了字符数据。
然后让接受方直接接受字符就行。
既然已经转换成了字符,直接使用字符流进行操作就就可以了。
还用一个 OutputStreamWriter去包装 OutputStream有什么意义呢。

就是说我一个中文的文档,因为一些技术原因,需要被转换成字节流才能传入到程序里。
然后我再程序里对接受到的字节其进行转换,保存在一个 String 之中。

之后如果我要写入,我可以直接使用字符流,而没有必要再用一个 OutputStreamWriter 包装一个 OutputStream 去写入到文件里吧。
如果非要再包装成字节流进行传输,直接进行字节传输就好了 。
...全文
390 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
isole、浩 2016-07-30
  • 打赏
  • 举报
回复
楼上说的有道理,你可以尝试写个这样的一个小程序,通过程序复制一个图片,用字节流做的时候复制的是没问题的,而用字符流做的时候图片的大小会变小,而且打不开。FileReader在默认的GBK编码表中如果找到了对应的字符就返回,如果没有对应的字符, 那么会返回一个未知字符对应的数字,未知字符占一个字节(如果原来是2个字节 此处返回1个字节 就有丢失现象了),各有优缺点吧,用多了就知道适宜的情况了
zoeg 2016-07-29
  • 打赏
  • 举报
回复
InputStream和OutputStream是java io中的基本输入输出管道,用来传输字节序列 经常发生在文件读写和网络IO操作中. InputStreamReader和OutputStreamWriter是Reader和Writer的实现, Reader和Writer是在字符层面的输入输出管道. 我觉得你的疑惑并不在于java.io下的一堆类,而是而是对于字节和字符的概念. 字节是计算机数据的最基本表示,网络传说或者文件存储,无论内容如何,最终都是一长串的字节序列. 而字符通常是对于人类能够理解的文字的计算机存储表达方式,因为太多,所以一个字节无法完全表达, 所以出现了GBK,UTF-8,Unicode等编码方式,所以字符其实就是某种编码格式的字节序列映射 比如,"中"字,使用GBK编码时,为0xD6 0xD0.而在UTF-8中则为:0xE4 0xB8 0xAD 你当然可以使用OutputStream.write("中".getBytes("GBK"))这种方式来输出一个字符. 但是,new OutputStreamWriter(os,"GBK")的好处需要你慢慢体会,当你系统足够复杂,模块足够多的时候,你就能慢慢理解
adfldk 2016-07-29
  • 打赏
  • 举报
回复
兼容更多数据格式吧
OPPPPOP 2016-07-27
  • 打赏
  • 举报
回复
数据传输、存储都是用二进制进行的,比如文件、Socket等等,这就必须要使用InputSteam、OutputStream; String仅仅限于java语言内的传输,想要保存成文件只用字符流是无法实现的;通过其他协议传输自然也不成了 最后lz说的字符流具体是啥呀,OutputStreamWriter 人家就是字符流!
soton_dolphin 2016-07-27
  • 打赏
  • 举报
回复
在读写文本文件的时候使用。
sky_08_06_02 2016-07-27
  • 打赏
  • 举报
回复
这个问题很多人提过,网上比较多的解释主要是效率、OutputStreamWriter能指定编码,都是在基于这个类已经设计出来的基础上,俺也想知道,JAVA设计这个类的好处,求大神指点!
sky_08_06_02 2016-07-27
  • 打赏
  • 举报
回复
楼主的意思可能是对于txt这些字符流文件可以用FileWriter直接就写入进去了,为什么还要设计出这个类OutputStreamWriter

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧