我是用来对比,解压出来的js文件通常要放置在安卓目录里面,每次app启动时都要调用这个文件来进行渲染,所以在每次打开app的时候就拿存放在assets文件夹下的zip源文件来和js文件进行对比,判断js文件是否被修改了或者破损了。
(assets文件夹下的内容只可读取不可写入)
public void btn3(View view) {
try {
InputStream open = getResources().getAssets().open("bootPage.zip");
ZipInputStream zipInputStream = new ZipInputStream(open);
zipInputStream.getNextEntry();
//未解压的zip文件
BufferedReader bufferedReader1=new BufferedReader(new InputStreamReader(zipInputStream));
//解压后的文件
File fileStreamPath = getFileStreamPath("bootPage.js");
FileInputStream fileInputStream = new FileInputStream(fileStreamPath);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
//判断解压后的文件在用户手机中是否被修改过了
while (true){
String s=new String();
String s1=new String();
try {
s = bufferedReader.readLine();//是解压后的文件 js
s1 = bufferedReader1.readLine();//是源文件zip
}catch (NullPointerException e){
//读到底部了
}
boolean b1 = s1 instanceof String;//为false说明读到底部了
boolean b2=s instanceof String;//为false说明读到底部了
//其实应该用switch语句
if (!b1&&!b2) {//两个文件都读完了
Toast.makeText(this, "一样", Toast.LENGTH_SHORT).show();
Log.e(TAG, "btn3: 读完了" );
break;
}else if (!b1||!b2){//其中一个读完了,另一个没读完
Toast.makeText(this, "不一样", Toast.LENGTH_SHORT).show();
Log.e(TAG, "btn3: 不一样" );
break;
} else if (b1 && b2) {//两个文件都没有读完,那么每次都进行对比
if (s.equals(s1)) {
Log.e(TAG, "btn3: 一样" );
}else {
Log.e(TAG, "btn3: 不一样" );
Toast.makeText(this, "不一样", Toast.LENGTH_SHORT).show();
break;
}
}
Log.e(TAG, "btn3: "+s );
Log.e(TAG, "btn3: "+s1 );
}
} catch (IOException e) {
e.printStackTrace();
}
}