1

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ヒープサイズの問題が発生します

単に私は次に欲しい:

  1. 「バッファ」にデータの新しいセグメントを作成する
  2. このセグメントを fileInputStream に書き込みます
  3. バッファ内のこのセグメントに割り当てられた空きメモリ
  4. 手順 1)、2)、3) を繰り返します。

そのようなアルゴリズムをどのように実装できますか?

4

0 に答える 0