【问题标题】:how to recover BufferedReader object from ByeArrayOutputStream如何从 ByteArrayOutputStream 中恢复 BufferedReader 对象
【发布时间】:2017-07-05 14:54:13
【问题描述】:

我编写了一个代码来存根System.out.println 并将BuffredReader 的对象传递给它。 我的问题是如何恢复BufferedReader 对象?

import java.io.*;

class Test {

  public static void main(String args[]) throws IOException {
    // stubbing the default print statement
    ByteArrayOutputStream outcontent = new ByteArrayOutputStream();
    System.setOut(new PrintStream(outcontent);

      //createing a BufferedReader obj and passing to print
      BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
      System.out.println(br);

      //trying to get the value from the outcontent and 
      // but i need to serialise this to BufferedReader
      System.err.println(outContent.toString());

    }
  }

我尝试使用this answer,但收到错误java.io.StreamCorruptedException: invalid stream header: 6A617661

【问题讨论】:

    标签: java deserialization bufferedreader bytearrayinputstream


    【解决方案1】:

    既然你已经有一个ByteArrayOutputStream,你应该试试这样的:

    BufferedReader reader = new BuffererdBeader( new InputStreamReader(
                                new ByteArrayInputStream( outcontent.toByteArray() ) ) );
    

    【讨论】:

    • 这样做,读者似乎没有任何 readLine() 方法
    • 是的,但是如果我编写您的代码,reader.readLine 不会接受来自控制台的任何值
    • 为什么它会对控制台做任何事情?它只是读取您的程序写入System.out 的内容。
    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2018-07-23
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多