Android lollipop ssl socket inputStream,在缓冲区之间打包的额外数据0位

时间:2015-05-13 05:11:08

标签: java android sockets ssl

我正在尝试从ssl套接字连接的inputstream读取文件并将其另存为文件。以下是适用于低于Android 5.1的任何设备的代码。

    while (inputStream != null && !cancel
            && (count = inputStream.read(bufferData)) != -1) {

      downloadData +=bufferData.length;

      fileOutputStream.write(bufferData,0,count);

      int percentOfDownload = (int) ((downloadData * 100) / totalSize);

    }

在android棒棒糖中,我得到文件损坏,在缓冲区数据之间打包了额外数据0位,导致文件大小比原始文件大。

大小通常比原始文件大12/13字节。 这只发生在上面的Android 5.1上。

1 个答案:

答案 0 :(得分:1)

downloadData += bufferData.length;

那应该是

downloadData += count;

您计算的是您没有收到的字节数。

您发布的代码不会损坏发送的文件。可能您的发送代码有类似的问题,即不使用write()方法中的计数,这与您上面所做的不同,这是正确的。

我没有看到测试inputStream为空的重点。