将设备中的文件与firebase中的文件进行比较

时间:2018-02-12 02:05:03

标签: android firebase firebase-storage

我的应用程序在第一次打开应用程序时从数据库下载html文件。

单击按钮时,我想检查每个html文件并下载“更新的”html版本(仅当设备中的html与数据库中的html不同时)

我该怎么做那种比较?

我的主要活动onCreate使用布尔值来检查是否是第一次打开应用程序,然后调用函数getFiles()来下载每个html文件。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button_horarios = (Button)findViewById(R.id.btn_horarios);

    Boolean isrunfirst = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("first", true);

    if(isrunfirst){

        getFiles();
        getSharedPreferences("PREFERENCE", MODE_PRIVATE).edit().putBoolean("first", false).apply();
    } else {

    }

}

getFiles函数,带有一个循环,用于“循环”一个包含文件名的String数组,其名称是从数据库中检索文件,最后使用函数saveFile()保存文件

public void getFiles(){
    FirebaseStorage storage = FirebaseStorage.getInstance();
    final StorageReference storageRef = storage.getReference();

    final String[] grupos = getResources().getStringArray(R.array.array_grupos);

    for(int i = 0; i < 97; i += 1) {

        final int finalI = i;
        StorageReference htmlRef = storageRef.child("grupos/" + grupos[finalI] + ".html");

        final long ONE_MEGABYTE = 1024 * 1024;
        htmlRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {

            @Override
            public void onSuccess(byte[] bytes) {

                saveFile(grupos[finalI] + ".html", bytes);

            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception exception) {

            }
        });
    }

}

saveFile()获取文件名和字节,将字节转换为保存的字符串。

private void saveFile(String file, byte[] bytes) {

    try {
        String text = new String(bytes, "UTF-8");
        FileOutputStream fis = openFileOutput(file, Context.MODE_PRIVATE);
        fis.write(text.getBytes());
        fis.close();
    }
    catch (IOException ex) {
        ex.printStackTrace();
    }
}

0 个答案:

没有答案