今天,把Assets中的文件拷贝到SD卡时,一直抛空指针异常,,原因是再拷贝前比较了MD5值,把inputstream读到了最后,再读inputstream就会空指针了;所以,要在读之前重新读一次inputstream;
is = context.getAssets().open(sourceFileName);
if(md5&&MD5Util.md5sumIs(is).equals(MD5Util.md5sum(desFile.getAbsolutePath()))){
Logger.p("md5 not change:::"+desFileName);
return;
}
is = context.getAssets().open(sourceFileName);
另一个问题,是总有一个数据库文件复制到SD卡后执行打开操作:SQLiteDatabase.openOrCreateDatabase(cellPath, null); 之后MD5值就会改变?
原因是文件的问题,打开文件查看后发现数据库文件缺少一个表 android_metadata,应该是执行SQLiteDatabase.openOrCreateDatabase(cellPath, null); 操作后会自动添加该表,所以文件MD5值变了;