如何在写入后清除PrintWriter的内容

Jav*_*yer 9 java servlets printwriter

晚上好,我想知道如何清除写入PrintWriter的数据,即打印后是否可以从PrintWriter中删除数据?

在这个servlet中,我将一些文本打印到响应中,并在#i表示的行中删除所有以前打印的数据并打印新内容:

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    String uName = request.getParameter("uName");
    String uPassword = request.getParameter("uPassword");

    if (uName .equals("Islam")) {
        out.println("Valid-Name");
        if (uPassword !=null) {
            if (uPassword .equals("Islam")) {
                // # clear the writer from any printed data here
                out.println("Valid-password");
            } else {
                out.println("");
                out.println("InValid-password");
            }
        }
    } else {
        out.println("InValid-Name");

    }

}
Run Code Online (Sandbox Code Playgroud)

注意:我尝试了out.flush()但旧的打印文本仍然存在

Cha*_*the 6

PrintWriter使用a 创建内存StringWriter.StringWriter如果需要,您可以从中获取底层缓冲区并清除它.

StringWriter sr = new StringWriter();
PrintWriter w = new PrintWriter(sr);

w.print("Some stuff");
// Flush writer to ensure that it's not buffering anything
w.flush();
// clear stringwriter
sr.getBuffer().setLength(0);

w.print("New stuff");

// write to Servlet out
w.flush();
response.getWriter().print(sr.toString());
Run Code Online (Sandbox Code Playgroud)