InputStream包装器在出错时访问内部流

时间:2016-01-12 16:47:03

标签: java inputstream guava wrapper


我的问题是我需要解码base64流,以防出现问题,我需要访问该base64流到例如将其写入磁盘以进行进一步分析。

所以,第一部分是直截了当的。用番石榴我可以做到

final InputStream dataBase64Stream = httpPost.getResponseBodyAsStream();
final InputStream binaryStream = 
        BaseEncoding.base64().decodingStream(new InputStreamReader(dataBase64Stream));

其中httpPost来自我获取base64数据的地方(我在这里使用commons-httpclient的PostMethod)。

现在我将binaryStream传递到其他地方并在那里读到它 如果binaryStream出现问题,我的问题就出现了 就我而言,它有时不包含base64,而是包含错误消息的XML。

所以,我的问题是:
如果从(内部)binaryStream读取异常,我如何访问内部dataBase64Stream以查看正在发生的事情?

  • 也许我可以注册某种异常处理程序?
  • 或许我可以设置某种“后备”流处理器?
  • 或者可能有一些复合InputStream实现,我可以为实际读数添加binaryStream,如果需要,可以dataBase64Stream查看?

请注意,如果发生错误,我只能访问dataBase64Stream提醒 ..无需快退回来。

到目前为止,我考虑了以下内容:

  • dataBase64Stream的内容存储为临时文件
  • 创建我自己的小型InputStream,它具有dataBase64Stream
  • 的getter

我认为两者都有效,但我很乐意了解这种情况是否有最佳做法。

0 个答案:

没有答案