我们都知道Android有一个专门用于存储系统各种文件的数据库,我们删除文件的时候往往就是一个file.delete()之后,接着再发送一个广播
//发布广播要求更新数据
private void sendCategoryCountBroadcast(){
mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE));
}
然而,最近在维护最近文件的时候发现,这个广播没有用的,这个广播只会在文件存在的情况下才会对文件进行收录,但是当文件不存在的时候,它不会删除这个文件的记录,于是我们要彻底的删除一个文件,除了file.delete()或者是DocumentFile中的
DocumentsContract.deleteDocument(context.getContentResolver(),uri);
还要在数据库中删除文件:
ContentResolver resolver = mContext.getContentResolver();
resolver.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Files.Media.DATA + "=?", new String[]{path});
当然,也可以不删除,通过对在读取的时候判断一下文件是否存在也是可以的。
也就是通过file.exists()来判断。