繁体   English   中英

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

[英]java.lang.ArrayIndexOutOfBoundsException on FileOutputStream when receiving data from Server

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

服务器首先发送一个带有(FileOriginalName and FileLength)的数据包,然后它开始发送数据包(一个接一个 / bloc by bloc),每个数据包包含(8Kb file datas and 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:长度=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();

希望这会有所帮助,谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM