我正在尝试从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
的点。