您的位置:首页 > 移动开发 > Android开发

[Android]使用checksum校验文件是否被修改

2017-06-27 16:25 375 查看
FileUtils类中封装了用于获取文件32位校验码的方法:

//frameworks/base/core/java/android/os/FileUtils.java
public static long checksumCrc32(File file) throws FileNotFoundException, IOException {
CRC32 checkSummer = new CRC32();
CheckedInputStream cis = null;

try {
cis = new CheckedInputStream( new FileInputStream(file), checkSummer);
byte[] buf = new byte[128];
while(cis.read(buf) >= 0) {
// Just read for checksum to get calculated.
}
return checkSummer.getValue();
} finally {
if (cis != null) {
try {
cis.close();
} catch (IOException e) {
}
}
}
}


在TelephonyProvider中就有应用到次方法来校验apns-conf.xml是否被修改,判断apn数据表是否需要更新:

private boolean apnDbUpdateNeeded() {
File confFile = getApnConfFile();
long newChecksum = getChecksum(confFile);//计算当次的checksum
long oldChecksum = getApnConfChecksum();//从历史记录中获取上一次的checksum
if (newChecksum == oldChecksum) {//对比2次
return false;//文件没有被修改
} else {
return true;//文件已被修改
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐