我不知道这是否是唯一的问题,但是你在其中遇到了典型的Java故障:你没有指望总是允许read()返回的字节数少于你要求的字节数。因此,你的读取可能会少于1024个字节,但是你的写入操作始终会精确地写出1024个字节,其中可能包括上一个循环迭代中的字节。
更正为:
while ( (len1 = in.read(buffer)) > 0 ) { f.write(buffer,0, len1); }也许更高的延迟网络或Android上3G的较小数据包大小加剧了这种影响?

我不知道这是否是唯一的问题,但是你在其中遇到了典型的Java故障:你没有指望总是允许read()返回的字节数少于你要求的字节数。因此,你的读取可能会少于1024个字节,但是你的写入操作始终会精确地写出1024个字节,其中可能包括上一个循环迭代中的字节。
更正为:
while ( (len1 = in.read(buffer)) > 0 ) { f.write(buffer,0, len1); }也许更高的延迟网络或Android上3G的较小数据包大小加剧了这种影响?