Ich habe ein Objekt der StreamResource-Klasse mit einigen erforderlichen Inhalt darin. Ich bin mir sicher, dass dieser Inhalt gültig ist und ich ihn lokal für die weitere Verarbeitung speichern muss. Hier ist das Code-Snippet:Speichern Vaadin7 StreamResource in Datei
OutputStream os = new FileOutputStream(filePath, false);
byte[] buffer = new byte[1024];
int bytesRead;
//read from is to buffer
try {
while(true)
{
bytesRead = resource.getStream().getStream().read(buffer);
if(bytesRead == -1)
break;
os.write(buffer, 0, bytesRead);
resource.getStream().getStream().skip(bytesRead);
}
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
Und hier schließe ich die Endlosschleife. Pause ist nie eingetreten und Datei an der benötigten Stelle wird so groß, wie es eigentlich sollte. Unter dem Debugger sehe ich, dass die Operation read() nur den ersten Teil der Bytes in jeder Iteration zurückgibt, sogar mit dem Aufruf skip() nach os.write.
Wie soll ich den Inhalt aus dem Stream lesen?
Danke.
Was ist der Anwendungsfall? Laden Sie etwas in Ihre Vaadin App hoch? –
Nein, ich erzeuge den Inhalt selbst. Kein Upload hier – user1053031