首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将PrintWriter转换为字符串或写入文件?

如何将PrintWriter转换为字符串或写入文件?
EN

Stack Overflow用户
提问于 2012-02-10 19:06:51
回答 7查看 50.1K关注 0票数 21

我正在使用JSP生成动态页面,我想将这个动态生成的完整页面保存在文件中作为存档。

在JSP语言中,所有内容都写入PrintWriter out = response.getWriter();

在页面的末尾,在向客户端发送响应之前,我希望将此页面保存在文件或缓冲区中作为字符串,以便以后处理。

如何保存Printwriter内容或转换为String

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-02-10 19:25:24

这将取决于: PrintWriter是如何构造和使用的。

如果首先构造PrintWriter,然后将其传递给写入它的代码,则可以使用装饰器模式,它允许您创建Writer的子类,该子类将PrintWriter作为委托,并将调用转发给委托,但还会维护内容的副本,然后您可以对其进行存档。

代码语言:javascript
运行
复制
public class DecoratedWriter extends Writer
{
   private final Writer delegate;

   private final StringWriter archive = new StringWriter();

   //pass in the original PrintWriter here
   public DecoratedWriter( Writer delegate )
   {
      this.delegate = delegate;
   }

   public String getForArchive()
   { 
      return this.archive.toString();
   } 

   public void write( char[] cbuf, int off, int len ) throws IOException
   {
      this.delegate.write( cbuf, off, len );
      this.archive.write( cbuf, off, len );
   }

   public void flush() throws IOException
   {
      this.delegate.flush();
      this.archive.flush();

   } 

   public void close() throws IOException
   {
      this.delegate.close();
      this.archive.close();
   }
}
票数 7
EN

Stack Overflow用户

发布于 2017-03-01 23:40:29

要从PrintWriter的输出中获取字符串,可以通过构造函数将StringWriter传递给PrintWriter

代码语言:javascript
运行
复制
@Test
public void writerTest(){
    StringWriter out    = new StringWriter();
    PrintWriter  writer = new PrintWriter(out);

    // use writer, e.g.:
    writer.print("ABC");
    writer.print("DEF");

    writer.flush(); // flush is really optional here, as Writer calls the empty StringWriter.flush
    String result = out.toString();

    assertEquals("ABCDEF", result);
}
票数 46
EN

Stack Overflow用户

发布于 2013-03-20 12:01:17

为什么不使用StringWriter呢?我认为这应该能够提供你需要的东西。

举个例子:

代码语言:javascript
运行
复制
StringWriter strOut = new StringWriter();
...
String output = strOut.toString();
System.out.println(output);
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9226794

复制
相关文章

相似问题

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