代码之家  ›  专栏  ›  技术社区  ›  pauljwilliams

如何提取发送到打印流的内容?

  •  1
  • pauljwilliams  · 技术社区  · 16 年前

    我使用的第三方类具有以下方法:

    public void print(PrintStream s);
    

    但我要做的是敏锐地记录输出。类似:

    RecordingPrintStream p = new RecordingPrintStream
    instance.print(p);
    logger.log(p.getContents());
    

    那么我可以使用什么作为我的记录打印流呢?

    2 回复  |  直到 16 年前
        1
  •  5
  •   unbeli    16 年前

    类似:

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PrintStream recordingStream = new PrintStream(baos);
    instance.print(recordingStream);
    logger.log(baos.toString());
    
        2
  •  -1
  •   YoK    16 年前

    可以使用以下构造函数创建打印流: 打印流(输出流输出)

    您可以在创建printstream对象时使用任何StringOutputstream,并使用日志方法从StringBuffer获取内容以进行输出。

    class StringOutputStream extends OutputStream {
    
      StringBuilder mBuf;
    
      public void write(int byte) throws IOException {
        mBuf.append((char) byte);
      }
    
      public String getString() {
        return mBuf.toString();
      }
    }
    

    因此,如果要输出到文件,请在构造printstream对象时使用fileoutputstream对象。