将 OutputStream 转换为 PipedOutputstream
Converting OutputStream into PipedOutputstream
在 Java 函数 A 中有一些现有代码 return 是一个 OutputStream,但我希望它成为 return 我可以与 PipedInputStream 一起使用的 PipedOutputStream所以:
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)
return 是一个 OutputStream,而不是一个 Piped 流,所以不知道该怎么做。
您不需要做任何事情。
您构建的 bufferedWriter
最终会写入 this.outputStream
,这是您的管道输出流。您不需要转换它或对它做任何事情——您已经在 class 的实例变量中引用了管道的两端。我假设您的代码如下所示。
this.outputStream = new PipedOutputStream();
this.inputStream = new PipedInputStream(this.outputStream);
OutputStream out = (encryptionKeyId != null) ?
pgpService.buildPgpOutputStream(this.outputStream, encryptionKeyId) :
this.outputStream;
return toBufferedWriter(out);
在 Java 函数 A 中有一些现有代码 return 是一个 OutputStream,但我希望它成为 return 我可以与 PipedInputStream 一起使用的 PipedOutputStream所以:
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)
return 是一个 OutputStream,而不是一个 Piped 流,所以不知道该怎么做。
您不需要做任何事情。
您构建的 bufferedWriter
最终会写入 this.outputStream
,这是您的管道输出流。您不需要转换它或对它做任何事情——您已经在 class 的实例变量中引用了管道的两端。我假设您的代码如下所示。
this.outputStream = new PipedOutputStream();
this.inputStream = new PipedInputStream(this.outputStream);
OutputStream out = (encryptionKeyId != null) ?
pgpService.buildPgpOutputStream(this.outputStream, encryptionKeyId) :
this.outputStream;
return toBufferedWriter(out);