try {
FileOutputStream tem = new FileOutputStream(mPath);
byte[] mByte = new byte[mBufferSize];
while (mInputStream.read(mByte) != -1) {
tem.write(mByte);
}
tem.flush();
tem.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
大神啊,你这样写肯定有问题啊
最后一次读取数据的时候可能不够mBufferSize,比如mBufferSize=1024,但是最后只有1个字节,那么剩下1023个字节就是多余的,所以文件就大一些
正确写法:
while ((len = mInputStream.read(mByte) )!= -1) {
tem.write(mByte, 0, len);
}
FileOutputStream tem = new FileOutputStream(mPath);
byte[] mByte = new byte[mBufferSize];
while (mInputStream.read(mByte) != -1) {
tem.write(mByte);
}
tem.flush();
tem.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
大神啊,你这样写肯定有问题啊
最后一次读取数据的时候可能不够mBufferSize,比如mBufferSize=1024,但是最后只有1个字节,那么剩下1023个字节就是多余的,所以文件就大一些
正确写法:
while ((len = mInputStream.read(mByte) )!= -1) {
tem.write(mByte, 0, len);
}
IOUtils.copy(conn.getInputStream(),out);
out.flush();
out.close();