一貫して再現できない問題が発生しています。ファイルを読み取り、そのファイルの内容を ServletOutputStream に書き込みます。
byte[] buff = new byte[65536];
int bytesRead = dataStream.read(buff);
response.getOutputStream().write(buff, 0, bytesRead);
一部のファイル (20KB 未満) が、出力ストリームへの書き込み時に IndexOutofBoundsException をスローすることがあることに気付きましたが、それ以外の場合は、すべてがうまく機能します。つまり、IndexOutOfBoundsException は報告されません。
これが私が得るスタックトレースです:
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:331)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:392)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:381)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:88)
at com.abc.web.DeliverData.serviceRequest(DeliverData.java:101)
私のコードの 101 行目は次のとおりです。 response.getOutputStream().write(buff, 0, bytesRead);
同じファイルでテストしても一貫して問題が報告されない理由はありますか?