Struts2 では、次のコードを使用してサーバー上にファイルを作成し、ユーザー コンピューターのハード ドライブに書き込みます。
struts.xml
<action name="download" class="com.DownloadAction">
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">fileInputStream</param>
<param name="contentDisposition">attachment;filename="report.xxx"</param>
<param name="bufferSize">83886080(or more bigger)</param>
</result>
</action>
アクション
public String execute() throws Exception {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
.... //code for writing to the buffer
fileInputStream = new ByteArrayInputStream(buffer.toByteArray());
return SUCCESS;
}
「バッファ」が非常に大きい場合、Javaヒープサイズの問題が発生します
単に私は次に欲しい:
- 「バッファ」にデータの新しいセグメントを作成する
- このセグメントを fileInputStream に書き込みます
- バッファ内のこのセグメントに割り当てられた空きメモリ
- 手順 1)、2)、3) を繰り返します。
そのようなアルゴリズムをどのように実装できますか?