Android Lollipop SSL套接字输入流,额外的数据0位在缓冲区之间包装



我正在尝试从SSL套接字连接的输入中读取文件并将其保存为文件。以下是适用于低于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 Lollipop中,我将文件损坏,并用额外的数据0位包装在缓冲区数据之间,从而导致大小大于原始文件的文件。

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

downloadData += bufferData.length;

应该是

downloadData += count;

您正在计算您未收到的字节。

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

我看不到为null测试inputStream的点。

最新更新