从合理利用内存的角度出发,在开发的过程中,用不到的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://开头的Uricontext.getContentResolver().delete(uri, null, null);} else {File file = new File(FileUtils.getRealFilePath(context,uri));if (file.exists()&& file.isFile()){file.delete();}}}

Android 根据Uri删除文件相关推荐

  1. 对android手机已删除文件的恢复

    对android手机已删除文件的恢复 LOST.DIR文件夹中意外丢失文件的恢复方法 玩了一段时间Android系统了,大家都一定知道,LOST.DIR目录是Android系统下一个意外丢失的文件收集 ...

  2. Android USB(OTG) 删除文件的探索过程

    有同学问,删除文件不就一个File.delete()吗,有什么好探索的?那你就太年轻了,随着Android的版本更迭,权限越来越严格,不是你说删就能删的. 首先,是Android 5.0(L)以前删除 ...

  3. android shell强制删除文件夹_别再乱清手机内存了,删除这3个“特殊”文件夹!空间释放8GB...

    这样您就可以继续免费收到文章了. 完全都是免费订阅,请放心关注! 绝大部分的"爱国人士",都比较喜欢用安卓手机,尤其是华为手机,然而我们的安卓手机,因为系统的问题,在使用了一段时间 ...

  4. android shell强制删除文件夹_原来手机中的这些文件可以删除,难怪手机越用越卡!...

    很多从 iOS 转移到 Android 生态的用户,总是会有这样的抱怨:Android 系统越用越卡,就算清理垃圾也没用! 但其实在Android系统中,除了日常的清理垃圾,我们还可以将一些没用的文件 ...

  5. android通过uri得到文件对象,安卓[android] 通过Uri获取File文件

    /** * 通过Uri返回File文件 * 注意:通过相机的是类似content://media/external/images/media/97596 * 通过相册选择的:file:///stora ...

  6. android raw获取uri_音频-获取存储在android的res / raw文件夹中的.mp3文件的URI

    音频-获取存储在android的res / raw文件夹中的.mp3文件的URI 我在res / raw文件夹中存储了许多.mp3文件. 我正在使用以下代码获取.mp3文件的URI. Uri.pars ...

  7. android 获取文件uri,Android:从内容URI获取文件URI?

    如果你有一个file:///的内容Uri,你可以使用此方法获取Android 19或更高版本的文件夹或文件的绝对路径. public static String getPath(final Conte ...

  8. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

    文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...

  9. android删除文件夹代码,Android_Android递归方式删除某文件夹下的所有文件(.mp3文件等等),1.由于需要删除文件,因此需 - phpStudy...

    Android递归方式删除某文件夹下的所有文件(.mp3文件等等) 1.由于需要删除文件,因此需要如下权限: 2.核心代码 package com.example.deleteyoumi; impor ...

最新文章

  1. Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明
  2. spring@Transactional注解事务不回滚不起作用无效的问题处理
  3. How to change windows applicatioin's position via Win32 API
  4. 60秒计时器的仿真电路_物联网应用基于Arm微控制器的低功耗定时关机计时器
  5. 从bsp redirect到ui5_ui5
  6. mysql字符串处理函数left()、length()使用
  7. vector的基础使用
  8. 实战:基于服务端开发和前后端分离开发区别
  9. 算法大亨Carl的面试简历长啥样?同款模板让你脱胎换骨
  10. Ubuntu10.04正式版主目录加密BUG
  11. GPS定位原理、系统组成及工作频段
  12. QT之隐藏任务栏图标
  13. AEC非线性处理模块
  14. python爬虫常见报错_Python爬虫常见异常及解决办法
  15. iPhone SE 3将定档3月8日:外观照旧 价格或成新惊喜
  16. 洛谷P1966 火柴排队
  17. R语言基于库克距离统计量识别(Cook’s distance)对于回归模型性能或者预测影响(Influential observation)很大的观测样本、可视化库克距离并添加阈值线识别影响力大的样本
  18. 从产业链角度,来深度剖析智能家居
  19. 效能大提升!百度与英特尔携手开拉新Nervana NNP芯片
  20. 阿里OCR-图像文字的识别和理解

热门文章

  1. 基础练习 01字串 c语言
  2. CentOS下如何完全卸载MySQL?解决卸载不干净的问题
  3. Python爬虫大杀器之Requests快速入门
  4. spark之4:基础指南(源自官方文档)
  5. 剑指offer 树的子结构
  6. 一文“妙”解逻辑斯蒂回归(LR)算法
  7. IBM开放Watson AI服务增加云服务使用
  8. 第三方seo关键词优化工具推荐
  9. 【Java】Java运行cmd命令直接导出.sql文件
  10. Java核心API -- 2(String、StringBuilder、StringBuffer)