SoyaDokio 2016-06-28 08:57 采纳率: 100%
浏览 3402
已采纳

OutputStreamWriter和PrintWriter之间是什么关系,有什么区别,如何使用?

我想请教大家一个问题。
我看到大家写输入输出流时常常是这写的:

 new BufferedReader(new InputStreamReader(new InputStream()));
new BufferedWriter(new PrintWriter(new OutputStream()));

可我觉得像下面这样搭配似乎看起来更符合习惯、直观:

 new BufferedReader(new InputStreamReader(new InputStream()));
new BufferedWriter(new OutputStreamWriter(new OutputStream()));

但为什么大家用的都是上面一种方式呢?OutputStreamWriter和PrintWriter之间是什么关系,有什么区别,为何后者会替代前者使用?

p.s.参考外国网友的回答,我的理解是前者是输出字节码,而后者是输出字符?丈二摸不着头脑。

  • 写回答

5条回答 默认 最新

  • 暮云收尽溢清寒 2016-06-29 01:32
    关注

    整个流的设计时装饰者模式,所以每种不同实现都是含有不同的实现。字节流和字符流是不同的,
    用字节流读字符数据或用字符流读字节数据都会出现丢失,这个区别为什么还不够呢?

    用哪个要看你读的是什么类型的数据,复制个文件肯定是字节流,读取文件内容肯定是字符流。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记