最近,我在下面的代码中收到了几个异常日志:
if(apk != null && !apk.exists()) {
throw new Exception("xxxxxx");
}
apk文件是从cdn server下载的:
download(url, new Listener(){
public void onSuccess(File tempFile) {
File apk = getApkFile("apkName.apk");
renameTo(tempFile, apk); // the apk is mentioned above
}
});
public static boolean renameTo(File source, File dest) {
try {
FileInputStream fis = new FileInputStream(source);
FileOutputStream fos = new FileOutputStream(dest);
byte[] buffer = new byte[4096 * 2];
int len;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
FileUtils.closeQuietly(fis);
FileUtils.closeQuietly(fos);
return source.delete();
} catch (Exception e) {
}
return false;
}
static File getApkFile(String name) {
File dir = new File(ContextUtil.get().getFilesDir(), DIR_PLUGIN);
if (!dir.exists()) {
dir.mkdir();
}
return new File(dir, name);
}
但是数量并不算太多,400,000多个设备中有40个,有没有人遇到过这个问题?
答案 0 :(得分:0)
您的问题有树的原因。首先,您没有检查renameTo()
的返回值。其次,如果renameTo()
中有捕获,则不会通知用户/您自己。第三个mkdirs()
可能会失败。您没有检查返回值。如果它返回false,则继续使用您的代码,就像没有发生任何事情一样。
总而言之,代码不是很强大。然后在400000设备上运行......