2016-12-02 4 views
0

私はExcelファイルを生成するクラスが必要です。クラスは出力ストリームを取り、FileOutputWriterを対象としています。 しかし、後でファイルをS3にアップロードする必要があるため、ファイルに保存することは不要です。 ファイルをS3にアップロードするには、それを入力ストリームとして必要とします。OutputStreamへのInputStream

私は、出力ストリームを入力ストリームに変換する方法や、入力ストリームにデータを転送する方法を探していました。

PipedOutputStreamを使用したとき、私はFileOutputStreamそれが正常に動作し、ファイルを書き込みますを使用して、永遠にxlsFile.write(outstr);だけブロックをPipeOutputStreamを試してみましたが、しています。

PipedInputStream inputStream = new PipedInputStream(); 
try (OutputStream outstr = new PipedOutputStream(inputStream)) { 
    xlsFile.write(outstr); 
    outstr.flush(); 
    return inputStream; 
} 
+2

これは1つのスレッドで実行しているためです。 –

+0

ここで提供されているソリューションを使用できると思います。http://stackoverflow.com/questions/43157/easy-way-to-write-contents-of-a-java-inputstream-to-an-outputstream –

+1

'PipedInputStream' /' PipedOutputStream'は別のスレッドで処理されています。それらを単一のスレッドで処理すると、そのスレッド自体がブロックされます。 http://stackoverflow.com/a/23874232/166589 –

答えて

関連する問題