【发布时间】:2020-11-27 20:58:12
【问题描述】:
在 Java 中,函数 A 中有一些现有代码返回一个 OutputStream,但我希望它返回一个 PipedOutputStream,我可以将它与 PipedInputStream 一起使用,如下所示:
this.inputStream = new PipedInputStream(this.outputStream);
将 OutputStream 转换为 PipedInputStream 是否有效,还是我需要从一个全新的 PipedOutputStream 开始并在那里重复所有逻辑?
更多代码:
我的 PipedInputStream 将像这样将数据传输到 s3:
tm.upload(bucketName, objectKey, this.inputStream, objectMetadata);
(tm 是 TransferManager)
并且 PipedOutputStream 将与写入文件的 Writer 一起使用。
OutputStream out = (encryptionKeyId != null) ?
pgpService.buildPgpOutputStream(this.outputStream, encryptionKeyId) :
this.outputStream;
return toBufferedWriter(out);
所以在上面的开关中,当out 是this.outputStream; 时,它工作正常。因为它是 PipedOutputStream。但是pgpService.buildPgpOutputStream(this.outputStream, encryptionKeyId) 返回的是一个 OutputStream,而不是 Piped 的,所以不知道该怎么做。
【问题讨论】:
-
不,投射不起作用。您能否编辑问题以添加代码的相关部分,以便更好地了解您要做什么?
-
@Joni 我添加了一些,只是为了澄清 - 谢谢。
-
您可以访问 pgpService 代码吗?可以改吗?
标签: java casting stream inputstream outputstream