博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 根据Uri删除文件
阅读量:7137 次
发布时间:2019-06-28

本文共 1892 字,大约阅读时间需要 6 分钟。

  从合理利用内存的角度出发,在开发的过程中,用不到的file要进行回收。在需要使用系统应用时,数据的传输需要用Uri,本篇博客就是对根据Uri删除文件的知识总结。

Uri的两种形式:
  1. 以“content://”开头的
  2. 以“file://”开头的
在Android 7.0中,应用间的数据交互,必须以content://开头。

以“content://”开头的

context.getContentResolver().delete(uri, null, null);

以“file://”开头的

File file = new File(FileUtils.getRealFilePath(context,uri));if (file.exists()&& file.isFile()){    file.delete();}

  先把uri转换成path后,创建文件。判断是否存在,是不是文件而不是文件夹,最后调用delete()删除。有人说,这种删除方法,会把文件内容删掉,留一个空文件,我测试的时候还没有碰到。

  uri转换成path的方法,借鉴其他人的文章,现在找不到文章了。

/** * Try to return the absolute file path from the given Uri * * @param context * @param uri * @return the file path or null */ public static String getRealFilePath(final Context context, final Uri uri ) {     if ( null == uri ) return null;     final String scheme = uri.getScheme();     String data = null;     if ( scheme == null ){         data = uri.getPath();     else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {         data = uri.getPath();     } else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {         Cursor cursor = context.getContentResolver().query( uri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null );         if ( null != cursor ) {             if ( cursor.moveToFirst() ) {                 int index = cursor.getColumnIndex( MediaStore.Images.ImageColumns.DATA );                 if ( index > -1 ) {                     data = cursor.getString( index );                 }             }             cursor.close();         }     }     return data; }

综合成一个方法:

public void deleteUri(Context context, Uri uri) {     if (uri.toString().startsWith("content://")) {         // content://开头的Uri         context.getContentResolver().delete(uri, null, null);     } else {         File file = new File(FileUtils.getRealFilePath(context,uri));         if (file.exists()&& file.isFile()){             file.delete();         }     } }

转载地址:http://qctrl.baihongyu.com/

你可能感兴趣的文章
Linux入门及企业服务器知识学习笔记
查看>>
Let’sEncrypt证书申请
查看>>
硬盘分区、寻址和系统启动过程
查看>>
C#.NET 大型通用信息化系统集成快速开发平台 4.1 版本 - 发送通知功能改进改进...
查看>>
写了C# ASP.NET WebService的XML解析网站接口程序收了200元辛苦费【加入软件项目源码交易群的好处】...
查看>>
机械硬盘磁盘结构损坏且无法读取文件如何找到
查看>>
linux入门级知识大全
查看>>
linux笔记(历史,含义,以及安装centos7)
查看>>
Linux关机提示"A stop job is running for ..."
查看>>
文件上传限制绕过技巧
查看>>
二、免费KVM_Input Director帮你用一套键盘鼠标操作多台电脑
查看>>
勉励自己,加油!
查看>>
为1900个JNI函数添加日志
查看>>
Domino如何分批压缩数据库
查看>>
Spring Data JPA @EnableJpaRepositories配置详解
查看>>
华为p20pro投屏电脑 华为p20pro性能介绍
查看>>
到2023年将会有超过90%的PC采用SSD硬盘
查看>>
如何找回删除的照片?恢复方法介绍
查看>>
OSPF协议在企业中的综合应用案例
查看>>
浅解Linux的启动流程
查看>>