Java中流的关闭

1.response.getWriter().print("");

2.PrintWriter out = response.getWriter();
  out.print("");
  out.close();

第一种方式可以吗?流会自动关闭吗?

阅读 3k
2 个回答

在使用HttpServletResponse.getOutputStream()/.getWriter() 时, 不关是更好的选择.
原因:

  1. 容器总是会在Servlet生命周期结束时帮你关掉;
  2. 如果后续还有链式处理(如Filter),关掉了会造成response不可用;
  3. 少写代码少出bug.

response.getWriter().print("");不会自动关闭

response.getWriter源码
public PrintWriter getWriter()
/*     */     throws IOException
/*     */   {
/* 213 */     PrintWriter writer = this.response.getWriter();
/* 214 */     if (isFinished()) {
/* 215 */       this.response.setSuspended(true);
/*     */     }
/* 217 */     return writer;
/*     */   }
print方法源码
public void print(String s) {
        if (s == null) {
            s = "null";
        }
        write(s);
    }
    
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题