关于使用Retrofit下载zip文件不完整的问题,求大佬帮忙解决
大佬们,我使用Retrofit框架下载一个zip压缩包 但是下载下来后解压缩不了 我想可能是下载的压缩包不完整,一看确实是正常压缩包是94kb 我下载的才54kb 但是不知道哪里出问题了 求大佬帮忙解决 看看代码有没有问题
private void downloadFile(String filePath) {
Retrofit retrofit = RetrofitManager.getInstance().getRetrofit();
Api api = retrofit.create(Api.class);
Call<ResponseBody> call = api.downloadFile();
call.enqueue(new Callback<ResponseBody>() {
//下载成功
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
InputStream is = null;
byte[] bytes = new byte[2048];
int len = 0;
FileOutputStream fos = null;
String fileName = Constants.CACHE_ZIP_NAME;
try {
is = response.body().byteStream();
long total = response.body().contentLength();
File file = new File(filePath, fileName);
File dir = new File(mPath);
if (!dir.exists()) {
dir.mkdirs();
}
File f = new File(mPath + fileName);
if (f.exists()) {
f.delete();
}
fos = new FileOutputStream(file);
long sum = 0;
while ((len = is.read(bytes)) != -1) {
fos.write(bytes, 0, len);
sum += len;
int progress = (int) (sum * 1.0f / total * 100);
runOnUiThread(() -> {
mSyncDataBinding.pv.setCurrent(progress);
mSyncDataBinding.tv.setText("正在下载..." + progress + "%");
});
}
fos.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (is != null) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
runOnUiThread(() ->{
mSyncDataBinding.pv.setCurrent(100);
mSyncDataBinding.tv.setText("下载完成");
});
Log.d("ning", "onResponse: "+response.body());
//解压文件
// FileUtil.decompress(mPath+fileName,mPath);
Log.d("ning", "onResponse: ----"+mPath);
if (!mHasMain){
ActivityUtil.startActivity(SyncDataActivity.this, MainActivity.class);
}
finish();
}
您的每一个用心回答,都会让这个世界变得更美好一些!