Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将OutputStream转换为PipedOutputstream_Java_Casting_Stream_Inputstream_Outputstream - Fatal编程技术网

Java 将OutputStream转换为PipedOutputstream

Java 将OutputStream转换为PipedOutputstream,java,casting,stream,inputstream,outputstream,Java,Casting,Stream,Inputstream,Outputstream,在Java中,函数A中有一些现有代码返回一个OutputStream,但我希望它返回一个PipedOutputStream,我可以与PipedInputStream一起使用,如下所示: this.inputStream=新的PipedInputStream(this.outputStream) 将OutputStream强制转换为PipedInputStream有效吗,或者我需要从一个新的PipedOutputStream开始并在那里重复所有逻辑吗 更多代码: 我的PipedInputStrea

在Java中,函数A中有一些现有代码返回一个OutputStream,但我希望它返回一个PipedOutputStream,我可以与PipedInputStream一起使用,如下所示:

this.inputStream=新的PipedInputStream(this.outputStream)

将OutputStream强制转换为PipedInputStream有效吗,或者我需要从一个新的PipedOutputStream开始并在那里重复所有逻辑吗

更多代码:

我的PipedInputStream将向s3传输数据,如下所示:

tm.upload(bucketName、objectKey、this.inputStream、objectMetadata)

(tm为转让管理人)

PipedOutputStream将带有一个写入文件的编写器

OutputStream out = (encryptionKeyId != null) ?
                    pgpService.buildPgpOutputStream(this.outputStream, encryptionKeyId) :
                    this.outputStream;
            return toBufferedWriter(out);

所以在上面的开关中,当
out
this.outputStream时,工作正常。因为它是PipedOutputStream。但是
pgpService.buildPgpOutputStream(this.outputStream,encryptionKeyId)
返回一个输出流,而不是管道输出流,因此不确定要做什么。

您不需要做任何事情

您构建的
bufferedWriter
最终写入
this.outputStream
,这是您的管道输出流。您不需要强制转换它或对它执行任何操作-在类的实例变量中已经有了对管道两端的引用。我假设您的代码如下所示

this.outputStream = new PipedOutputStream();
this.inputStream = new PipedInputStream(this.outputStream);
OutputStream out = (encryptionKeyId != null) ?
                    pgpService.buildPgpOutputStream(this.outputStream, encryptionKeyId) :
                    this.outputStream;
return toBufferedWriter(out);

不,铸造不起作用。你能编辑这个问题来添加代码的相关部分吗?以便更好地了解你想做什么?@Joni我添加了一些,只是为了澄清-谢谢。你有权访问pgpService代码吗?你可以修改它?这正是我的代码——而且很重要,它使用一个PipeDoutpStream作为参数,因此它最终应该具有正确的引用,并且在技术上没有任何问题。非常感谢。