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() 处获得了索引越界异常。我可能错误地使用了参数偏移量和长度。不是每次我读入一个块时,我都应该将偏移量移动到块的大小吗?也许我只需要一次阅读更少并使用更小的缓冲区?
目前我有这个实现工作,但我担心内存使用:
DataOutputStream lWriter = new DataOutputStream(connection.getOutputStream());
lWriter.write(fileToBytes(xmlFile));
谢谢你的帮助!