我的应用程序在第一次打开应用程序时从数据库下载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();
}
}