[从服务器接收数据时FileOutputStream上的java.lang.ArrayIndexOutOfBoundsException

问题描述 投票:0回答:1

我想开发一个从服务器接收文件的android应用程序。

服务器首先发送带有((FileOriginalName和FileLength)的数据包,然后开始发送数据数据包(一个一个/一个bloc一个bloc),每个数据包包含((8Kb文件数据和blocIndex)]

当我收到第一个数据包时,我将创建一个具有给定长度的文件:

      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; regionStart = 8192; regionLength = 5077

java fileoutputstream randomaccessfile
1个回答
0
投票

我找到解决方法,

对于第一个数据包,我仅保存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();

希望有帮助,谢谢

© www.soinside.com 2019 - 2024. All rights reserved.