我正在尝试从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上。
答案 0 :(得分:1)
downloadData += bufferData.length;
那应该是
downloadData += count;
您计算的是您没有收到的字节数。
您发布的代码不会损坏发送的文件。可能您的发送代码有类似的问题,即不使用write()
方法中的计数,这与您上面所做的不同,这是正确的。
我没有看到测试inputStream
为空的重点。