2016-12-02 6 views
0

Ich habe zu einer Klasse, die eine Excel-Datei generiert, Klasse nimmt einen Ausgabestream, für eine FileOutputWriter bestimmt. Allerdings muss ich die Datei später zu S3 hochladen, daher wäre es unnötig, sie in einer Datei zu speichern. Um eine Datei in S3 hochzuladen brauche ich sie als Eingabestream.InputStream to OutputStream

Ich habe daher nach einer Möglichkeit gesucht, einen Ausgabestream in einen Eingabestream zu konvertieren oder die Daten in einen Eingabestream zu übertragen.

ich PipeOutputStream versucht, aber xlsFile.write(outstr); nur Blöcke für immer bei Verwendung eines PipedOutputStream, ein FileOutputStream verwendet, wird die Datei in Ordnung und schreiben arbeiten.

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

Weil Sie es in einem einzigen Thread tun. –

+0

Ich könnte mir vorstellen, dass Sie die hier angebotene Lösung verwenden können: http://stackoverflow.com/questions/43157/easy-way-to-write-contents-of-a-java-inputstream-to-an-outputstream –

+1

'PipedInputStream' /' PipedOutputStream' sollen in verschiedenen Threads verarbeitet werden. Wenn sie in einem einzelnen Thread verarbeitet werden, blockiert sich der Thread selbst. Ein Beispiel finden Sie unter http://stackoverflow.com/a/23874232/166589 –

Antwort

Verwandte Themen