私はStreamResourceクラスのオブジェクトをいくつか必要なコンテンツとともに持っています。私はこのコンテンツが有効であると確信して、私はそれ以降の処理のためにローカルに保存する必要があります。コードスニペットは次のとおりです。ファイルにVaadin7 StreamResourceを保存します。
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();
}
ここで私は無限ループに参加します。ブレークは決して矯正されず、必要な場所のファイルは実際には巨大になります。デバッガでは、read()オペレーションは、os.writeの後にw/skip()を呼び出しても、各繰り返しで1バイト目のバイトだけを返します。
ストリームからコンテンツをどのように読み取る必要がありますか?
ありがとうございました。
ユースケースとは何ですか?ユーザーがVaadinアプリに何かをアップロードしていますか? –
いいえ、私はコンテンツを自分で生成します。ここにアップロードはありません。 – user1053031