分析資産は、アーカイブフォルダ(JS単一の圧縮ファイル)をzip圧縮、および電話コードで保存されたJS JSファイルの前に出て内部のファイル解凍するかどうかは一貫しています

私はあなたがアプリを開くたびので、私は資産フォルダに保存されている取ることができ、あなたはアプリをレンダリングするために起動するたびに、このファイルを呼び出す必要があり、JSファイルからの抽出物は、通常、ディレクトリアンドリュースに配置され、比較するために使用されましたJSは、比較されるファイルとソースファイルを圧縮、JSファイルが変更または破損しているかどうかを決定しました。

(コンテンツ資産は、読み取り専用で、書き込み可能なフォルダではなく)

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();
        }
    }
元の記事を公開 ウォンの賞賛0 ビュー6

おすすめ

転載: blog.csdn.net/XunYoua/article/details/104750259