我想开发一个从服务器接收文件的 Android 应用程序。
服务器首先发送一个带有(文件原始名称和文件长度)的数据包,然后开始发送数据包(逐一/逐 block ),每个数据包包含(8Kb文件数据和 block 索引)。
当我收到第一个数据包时,我创建一个具有给定长度的文件:
RandomAccessFile f = null;
try {
f = new RandomAccessFile(originalFileName, "rw");
f.setLength(length);
} catch (IOException e) {
e.printStackTrace();
}
然后每次从服务器接收数据包时我都会调用以下代码:
FileOutputStream _fOS = new FileOutputStream(fileOriginalPath);
_fOS.write(blockData, blockIndex << 13, blockData.length);
_fOS.close();
我在 _fOS.write 上收到以下错误:
java.lang.ArrayIndexOutOfBoundsException: length=5077;区域开始=8192;区域长度=5077
最佳答案
我找到了解决方案,
对于第一个数据包,我只保存originalFileName,
对于数据包,
for each received packet i call the following method
RandomAccessFile f = new RandomAccessFile(originalFileName, "rw");
f.seek(blockIndex << 13);
f.write(blockData);
f.close();
希望对你有帮助,谢谢
关于从服务器接收数据时 FileOutputStream 出现 java.lang.ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61157758/