首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >android 删除、重名命文件,刷新 Android 的 MediaStore,让你文件立即出现

android 删除、重名命文件,刷新 Android 的 MediaStore,让你文件立即出现

原创
作者头像
IT工作者
发布2022-05-14 18:20:51
发布2022-05-14 18:20:51
2.4K0
举报
文章被收录于专栏:程序技术知识程序技术知识

MediaStore,本质上是 Android 维护的一个文件系统的数据库,它记录了当前磁盘上所有的文件索引,我们可以通过它,快速的查找当前系统的文件。

MediaStore 刷新的时机是不一定的,也就是说,保存、删除、重命名 的一张图片文件,MediaStore 并不会立即刷新文件系统,将此文件索引记录下来。而系统本身是存在一些自动刷新 MediaStore 的时机,例如:重启手机。表现就是,当你保存了一张图片到本地文件夹中之后,通过文件管理器类的 App,可以在目录下找到这涨照片,但是在系统相册中,是无法立即看到它的,

所以在我们保存、删除、操作文件之后,去触发系统刷新 MediaStore 就尤为重要了。

重命名文件

代码语言:javascript
复制
//旧的文件
File file = new File(photoBean.getFilePath());

String newname = inputStr+photoBean.getFileType();
File f2 = new File(file.getParent()+File.separator+newname);
boolean b = file.renameTo(f2);
if(f2.exists()){
   Log.e("新的文件存在,重命名成功",f2.getPath());
}
//通知MediaStore刷新删除的文件
notifyLocalMedia(file.getPath());
//通知MediaStore刷新重命名的文件
updateGallery(f2.getPath());

删除文件

代码语言:javascript
复制
for(int i=0;i<delList.size();i++){
    System.gc();
    File file = new File(delList.get(i).getFilePath());
    boolean delete = file.delete();
    if(!file.exists()){
        Log.e("TGA","删除的文件已经不存在了");
    }
    notifyLocalMedia(file.getPath());
    updateGallery(file.getPath());
}

通知MediaStore刷新文件

代码语言:javascript
复制
//通知MediaStore刷新删除的文件
private void notifyLocalMedia(String imgPath) {
    Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    intent.setData(Uri.fromFile(new File(imgPath)));
    mContext.sendBroadcast(intent);
}
// 通知MediaStore刷新新的文件
private void updateGallery(String filename)//filename是我们的文件全名,包括后缀哦
{
    MediaScannerConnection.scanFile(mContext,
          new String[] { filename }, null,
          new MediaScannerConnection.OnScanCompletedListener() {
              public void onScanCompleted(String path, Uri uri) {
                  Log.e("TGA","刷新成功,文件路径:" + path);
                  handler.removeCallbacks(runnable);
                  handler.postDelayed(runnable,600);
              }
          });
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档