HttpServletResponse.getOutputStream.print(string) 与 getWriter(String) 的性能和大小限制

performance and size limitations on HttpServletResponse.getOutputStream.print(string) vs getWriter(String)

对于一个 Web 项目,我正在将大部分文本写入网页 (table) 或更大(可能是几 MB)的 CSV 文件以供下载。 处理此问题的 java 方法接收一个 StringBuilder 内容字符串,该字符串最初(由该模块的创建者)在一个循环中逐个字符地发送:

response.getOutputStream().write(content.charAt(i)).

在询问循环时,给出的理由是他认为字符串可能太大而不能一次写入。 (使用 java 1.6)。 我在任何地方都找不到任何大小限制,然后问题也来了,应该使用哪种方法:print() 或 getWriter()? 字符串中的数据都是文本。

他假设错了。如果有的话,它是低效的,或者至少一次做一个角色是无用的。如果你的内存中有String,你可以放心地一次性写出来。

如果您只是写文字,请使用 WriterOutputStream 用于二进制数据(尽管您可以将其包装在 OutputStreamWriter 中以在两者之间进行转换)。参见 Writer or OutputStream?