首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Writer还是OutputStream?

Writer还是OutputStream?
EN

Stack Overflow用户
提问于 2011-03-08 02:47:06
回答 3查看 14.7K关注 0票数 28

我正在设计一个库,在这个库中,类应该能够将内部内容转换为文本。我应该使用哪个类:OutputStream还是Writer?它们之间的主要区别是什么(在我的例子中)?

代码语言:javascript
复制
public interface Memento {
  void save(OutputStream stream);
  void save(Writer writer);
}

哪个?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-08 02:50:44

OutputStream是面向字节的流。您编写的任何文本都必须使用某种编码(最常见的是ISO-8859-1或UTF-8)编码为字节。Writer是面向字符的流,它可以在内部将字符编码为字节,也可以不在内部将字符编码为字节,这取决于它要写入的内容。

编辑如果您正在设计库,那么如果您提供了一个要向其中写入文本的OutputStream-oriented接口,那么您确实应该为客户端类提供控制要使用的编码的能力。

票数 35
EN

Stack Overflow用户

发布于 2011-03-08 02:50:04

文本?Writer。它的目的是处理字符,尊重编码。

流/字节数组- OutputStream。在原始字节上工作,没有字符、编码、字符串等概念。

票数 20
EN

Stack Overflow用户

发布于 2020-05-24 22:20:39

1)在许多情况下,最好是重写toString()或提供类似的方法来转换...将内部结构转换为文本。对于用户来说,这种方法优点是灵活性。例如,如果此方法的使用者可以:

  • 将其保存为某个POJO的一部分以将其作为字段保存到某个JSON对象
  • 保存到流
  • 将其保存到编写器

这在某些情况下可能是不利的,例如,当文本表示相对较大(如100MB),并且有许多请求同时产生这样的对象时。这可能需要过多的资源(CPU、RAM)。在这种情况下,直接写入流或写入器可能是优选。

2)如果你期望你的对象可以在许多不同的上下文中使用,那么为提供、保存到流和保存到编写器都是有意义的。例如,HttpServletResponse同时提供了getWriter()和getOutputStream(),这样每个人都可以决定哪个更适合自己的特定情况。或者杰克逊的JsonFactory为文件、OutputStream和编写器提供了* createGenerator()*方法,给了消费者更多的自由。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5223760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档