DataOutputStream lWriter = new DataOutputStream(connection.getOutputStream());
int bytesRead = 0;
int offset = 0;
byte[] bytes = new byte[1048576]; // read 1MB at a time
RandomAccessFile f = new RandomAccessFile(xmlFile, "rw");
while(bytesRead != -1){
offset += f.read(bytes, offset, bytes.length);
if (bytesRead != -1){
lWriter.write(bytes, 0, bytes.length);
}
}
このコードでは、f.read()でインデックスの範囲外の例外が発生しています。引数offsetとlengthを誤って使用している可能性があります。チャンクを読み込むたびに、オフセットをチャンクのサイズに移動する必要がありますか?たぶん、私は一度に読む量を減らして、より小さなバッファを使用する必要がありますか?
現在、この実装は機能していますが、メモリ使用量が心配です。
DataOutputStream lWriter = new DataOutputStream(connection.getOutputStream());
lWriter.write(fileToBytes(xmlFile));
助けてくれてありがとう!