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

标签 java fileoutputstream randomaccessfile

我想开发一个从服务器接收文件的 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/

相关文章:

Java ProcessBuilder 调试器 Netbeans

java - Android sqliteOpenHelper onUpgrade 用新数据库替换数据库

java - IO异常 : closed failed on FileOutputStream

java - 如何使用 FileOutputStream 删除 .txt 文件中的一行?

java - RandomAccessFile 中的结束行 StringBuilder

java - Android webview cookie 返回 null

java - RXJava 2 调用两次

java - FileInputStream 在skip()调用后留下奇怪的垃圾文本

java - 模拟随机访问文件

java - RandomAccessFile 悬挂指针