Android高效获取指定类型文件,获取文件不求人!

Android获取本机各种类型文件列表(音乐、视频、图片、文档等) 如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。,第一时间获取最新知识点Android架构师之路很漫长,一起共勉吧!算法知识点繁多,企业考察的题目千变万化,面对越来越近的“金九银十”,我给大家准备好了一套比较完善的学习方法,希望能帮助大家在有限的时间里尽可能系统快速的恶补算法,通过高效的学习来提高大家面试中算法模块的通过率。 阅读详情

1、前言:

最近因为项目需要,需要对手机的文件进行分类浏览,获取手机中各种指定类型的文件。想到一年之前曾经用递归的方法列出手机的所有MP3文件,这个思路是很不错,但是这个方法对于层次不深的文件系统效果还勉强过得去,如果手机文件数量巨大,文件夹层次较深的文件系统而言,效率就特别低!有些甚至半分钟都扫描不完整个手机的文件。鉴于此,从开源的文件浏览器项目中得到启示,并和大家分享

2、正题:

Android系统给我们提供了android.provider.MediaStore.XXX类,里面有很多接口可以直接获取相应的文件,比如android.provider.MediaStore.Images用于获取所有格式的图片,android.provider.MediaStore.Audio用于获取所有格式的音频,今天要介绍的是作为通用接口的android.provider.MediaStore.Files类,通过它可以获取任何你指定类型的文件。

import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore.Files;
import android.provider.MediaStore.Files.FileColumns;
import android.util.Log;

public class FileUtils {

	
	public static void getSpecificTypeOfFile(Context context,String[] extension)
	{
		//从外存中获取
		Uri fileUri=Files.getContentUri("external");
		//筛选列,这里只筛选了:文件路径和不含后缀的文件名
		String[] projection=new String[]{
				FileColumns.DATA,FileColumns.TITLE
		};
		//构造筛选语句
		String selection="";
		for(int i=0;i<extension.length;i++)
		{
			if(i!=0)
			{
				selection=selection+" OR ";
			}
			selection=selection+FileColumns.DATA+" LIKE '%"+extension[i]+"'";
		}
		//按时间递增顺序对结果进行排序;待会从后往前移动游标就可实现时间递减
		String sortOrder=FileColumns.DATE_MODIFIED;
		//获取内容解析器对象
		ContentResolver resolver=context.getContentResolver();
		//获取游标
		Cursor cursor=resolver.query(fileUri, projection, selection, null, sortOrder);
		if(cursor==null)
			return;
		//游标从最后开始往前递减,以此实现时间递减顺序(最近访问的文件,优先显示)
		if(cursor.moveToLast())
		{
			do{
				//输出文件的完整路径
				String data=cursor.getString(0);
				Log.d("tag", data);
			}while(cursor.moveToPrevious());
		}
		cursor.close();
		
	}

上面是我写的一个文件工具类,都有注释,所以这里我就不再啰嗦了。调用时只需要传入context和后缀名就可

FileUtils.getSpecificTypeOfFile(this, new String[]{".doc",".apk"});

通过测试发现,用以前递归的方式,时间往往都是“秒级的”,而现在这个方法,基本上都是在“毫秒级”。效率提升了几十倍!

希望对大家有所帮助!

安卓蓝牙文件传输完整指南 安卓蓝牙文件传输是指安卓设备能够在两个蓝牙设备之间无线传输文件,如照片、视频、文档等。这种文件传输方法简化了通过蓝牙发送文件的过程,无需额外应用程序。它与许多设备兼容,但不支持iOS或ChromeOS。支持此功能的安卓设备有一个名为“蓝牙共享”的设置。Chrome OS 89为Chromebook和安卓设备引入了“附近共享”功能。此外,与USB数据线、OTG数据线、U盘、个人热点、媒体中心、WiFi Direct、云存储/电子邮件和文件传输应用程序相比,蓝牙具有优势。 阅读详情

相关推荐

安卓文件传输工具---Android File Transfer中文

用户可以通过USB连接将文件传输到安卓设备,也可以将文件从安卓设备传输到计算机。此外,该软件还提供了文件和文件夹管理功能,使用户可以轻松浏览设备的存储空间,创建、删除、重命名和移动文件和文件夹。总的来说,Android File Transfer是一款功能强大、易于使用的文件传输工具,可以帮助用户快速方便地在安卓设备和计算机之间传输和管理文件。请注意,使用Android File Transfer时,确保您的Mac和Android设备都已开启USB调试模式,并且已授权计算机访问设备的存储空间。

llhf688的博客 6771

Android 获取文件类型

通过文件头获取文件类型

next_D的博客 885

Android快速查找手机文件内某种类型文件,可以调用系统自带工具打开文件

Android快速查找手机文件内某种类型或者某几种类型文件,而且可以调用系统自带工具打开文件,不存在媒体库文件不全的问题。

Android中,根据文件头获取文件类型

Android系统内部的MediaFile类来获取文件类型的办法,这个类主要是根据文件的扩展名来判断,其准确性不是很好。 具体可查看Android系统使用MediaFile类判断音频文件类型。 其实,获取文件类型最好的办法便是根据文件头信息来判断。 下面贴出相关代码: public class FileType { public static final HashMap&lt...

lishoujia的博客 1284

Android中Java根据文件头获取文件类型的方法

主要介绍了Android中Java根据文件头获取文件类型的方法,涉及Android针对文件属性的相关操作技巧,需要的朋友可以参考下

Android获取本机各种类型文件的方法

主要为大家详细介绍了Android获取本机各种类型文件的方法,包括音乐、视频、图片、文档等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

安卓读写文件的方法以及优劣分析

在Android开发中,数据的存储和读取是应用程序中常见的操作之一。本文将详细介绍Android中读写文件的方法,并对其优劣进行分析。同时,将附上相应的实现代码,以便读者更好地理解。

wlred1980的博客 1123

MAC 青花瓷(Charles)爪机HTTPS 抓包

前段时间跟之前的产品小姐姐聊天,小姐姐说开发让她抓包帮忙看下数据,然而自己又不会,那就来写一篇简易版的教程 冲冲冲! 手上只有mac电脑跟iPhone手机,只做苹果手机的抓包,android7.0以上版本也没法通过正常的抓htts的包,让安卓开发装个后门吧,不是安卓开发并不知道是啥,连上USB之后访问chrome://inspect/#devices就能很简单的抓包 一、准备工具等 青花瓷...

Promise的博客 1613

Android 开发-获取SD卡所有指定类型的文件

如何获取SD卡所有指定类型的文件--     首先想到的是利用JAVA的File 遍历SD卡,但这样实在是太慢了。  最后查找API文档 找到了          这个table 里面包含了SD卡的所有文件,包括媒体文件等。    直接上代码。   import android.net.Uri; import android.os.Bundle; import androi

DavyJonesWang的专栏 4200

S32K3双核实战:手把手教你用EB配置CAN与CANFD(附中断/轮询代码对比)

本文详细解析了NXP S32K3双核处理器在CAN/CANFD通信开发中的实战应用。通过Elektrobit配置工具链,从双核通信架构设计到EB tresos Studio配置全流程,再到中断与轮询模式的代码实现对比,全面指导开发者优化S32K3 FlexCAN模块性能,提升汽车电子系统的通信效率与可靠性。

weixin_30955617的博客 440

嵌入式开发语言-C语言编程

C语言编程概述环境在Windows上构建C语言的环境安装在Mac上构建C语言的环境安装 概述 “C语言”被称为适合嵌入式系统开发的编程语言之一。 C语言在一般的编程中也是熟悉的开发语言,但实际上,如果试着使用C语言制作微型计算机的控制程序等,就必须使用与“普通的C程序”不同的使用方法。 作为一般的C语言的学习方法,使用“printf”“scanf”等标准函数的程序开发是固定的,但这些都是以UNIX和Windows等环境上的应用程序开发为前提的。 对此,没有显示器和键盘的嵌入式系统的微型计算机控制程序,该如何

编程老王 7976

安卓 获取指定类型的文件_太良心了!传文件这件小事,这款免费APP比微信QQ好用十倍!...

不知道大家在遇到手机与手机、手机与电脑之间互传文件的时候,是借助的什么工具?是通过微信QQ这些社交软件,还是直接上数据线?这些方法都不是特别方便:微信限制文件大小和类型,用数据线需要频繁插拔。那么有没有一款连接简单,而且传输大型文件跟用数据线一样快的应用呢?最好是安卓、iOS都支持的。别说,还真有。今天给大家推荐的 xender,就满足以上所有需求。01 手机电脑互连,传输稳定无限制这款APP,不...

weixin_39818727的博客 159

BurpSuite实战:5分钟搞定DVWA的CSRF漏洞测试(附详细截图)

本文详细介绍了如何使用BurpSuite在DVWA靶场中进行CSRF漏洞测试,包括环境配置、攻击原理剖析、分步攻击演示及企业级防御方案。通过实战案例,帮助读者深入理解CSRF漏洞的危害与防护措施,提升Web应用安全防护能力。

weixin_30879169的博客 493

Android 文件快速扫描找出指定文件

查找出手机内指定后缀的文件,一般操作是 使用 递归 去遍历所有的文件,然后根据 文件名后缀进行筛选,这样做,发现效率特底,经常需要等好久才能出现 现在介绍,使用 ContentResolver 去查找 private void scan(){ String t = ""; String type = "pdf"; //要查找的文件后缀 ContentResolver resolver = getContentResolver(); .

duke_knight的博客 2833

【WRF-Urban】使用 NUDAPT 数据集与 BEP/BEP_BEM 方案的 WRF 配置指南

【WRF-Urban】使用 NUDAPT 数据集与 BEP/BEP_BEM 方案的 WRF 配置指南

WW、forever的博客 1964

谱方法学习笔记-下(超详细)

《谱方法学习笔记》深入介绍了傅立叶谱方法在解决偏微分方程问题中的理论和实践,提供了清晰的步骤、Matlab代码以及对一维、二维波动方程等不同问题的解析,适合对谱方法感兴趣的学习者。

图灵的猫的博客 2853

Android如何高效地进行文件查询——MediaStore

一开始想的是遍历所有文件夹,幸好查了度娘,才意识到这个想法有多蠢。 最为节省时间的做法是通过一个ContentProvider:MediaStore进行查询 一、什么是MediaStore 1、概述 MediaStore这个类是android系统提供的一个多媒体数据库,android中多媒体信息都可以从这里提取。 这个数据库中包括 音频、视频、图像、文件等多种类型的文件索引,Android会周期性地检索手机中的文件,添加至该数据库中。(一些应用也可以自发地将文件添加至该数据库中) 所以,我们只需要查询该数据

LoneySmoke的博客 1万+

uniapp - H5网页uni.getLocation报错getLocation:fail Geolocation permission denied.Get ipLocation failed.

uni.getLocation getLocation:fail Geolocation permission denied.Get ipLocation failed.,uni.getLocation定位失败,uni-app getLocation()无法获取定位,一直fail()uniapp移动端h5网页,uniApp微信内置浏览器定位失败,如何解决这个问题,uniapp h5 uni.getLocation获取位置失败怎么办,UNI-APP获取当前位置,uni.getLocation定位失败,unia

🏆 前端领域优质创作者 4241

Android File Transfer for Mac:为Mac用户打造的高效安卓文件管理工具

Android File Transfer for Mac:为Mac用户打造的高效安卓文件管理工具 【下载地址】AndroidFileTransferforMac 这款专为Mac用户设计的安卓文件管理器,让文件传输与管理变得前所未有的便捷。通过它,您可以轻松地在Mac上管理安卓设备中的各类文件,包括多媒体、文档等。其跨平...

gitblog_06748的博客 1001

Moviepy自动化剪辑视频中的广告

本教程展示了如何使用 Python 中的 MoviePy 库,通过检测和剪辑广告段落来实现视频内容的清洁播放。通过广告检测算法和 MoviePy 剪辑功能的结合,可以自动化处理视频,极大提升编辑效率。在学习和应用中,理解广告检测的原理及其实现方法尤为重要,以便针对不同类型的视频进行调整。此外,MoviePy 的灵活性使其适用于多种视频编辑场景,适合自动化内容制作与优化。

Mr数据杨 3409

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Unity获取文件夹下指定类型的文件数量

有个文件夹里面有很多的图片,都是.png格式的,要是一个一个的拖到脚本上觉得很麻烦,就写了一个遍历添加的cars,变量是List<Sprite> 代码如下: using UnityEngine; using System.IO; using System.Collections.Generic; public class NewBehaviourScript...

1653

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Android安卓备份img文件解压工具

Android安卓备份img文件解压工具 【下载地址】Android安卓备份img文件解压工具 这款开源工具专为解压Android安卓备份的img镜像文件设计,适用于Windows XP到最新版本的操作系统。它以高效、便捷为核心,支持快速解压,让用户轻松查看安卓备份内容。操作简单:下载工具、选择文件、指定保存位置、点击解...

gitblog_06780的博客 527

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【YOLO11安卓部署】10分钟快速高效的把YOLO11部署到安卓端

本文章只针对能较为熟练使用Android Studio进行安卓开发的朋友,如果你对安卓开发并不熟练,可以先熟练了再来尝试。 首先,感谢PIPIKAI(钟志凯)的开源分享,我们将在他的项目android-ncnn-yolo11的基础上进行安卓部署。

2301_78753314的博客 6173

BeeWare打包安卓apk文件,Python高效开发安卓app

提示:运行Python 3.7或更高版本例如:BeeWare 是一个基于 Python 构建的跨平台应用开发框架,能够让 Python 编写的图形程序在 iOS, Android, Windows, MacOS, Linux, Web, 和 tvOS 上运行,看起来是个非常强大的最新GUI库!安装:创建应用 BeeWare 安装完成之后,我们就可以通过 briefcase 命令在命令行终端进行 BeeWare 应用的管理,比如新建、运行、构建、打包等等。命令输入之后,会让我们输入「应用的正式名称」、「应用程

qq_45787306的博客 9632
上一篇: Android从SD卡加载大量图片
下一篇: Short s1=1; s1=s1+1;会报错吗,编译错误还是运行时错误
冒泡彩虹
博客等级 码龄14年 17粉丝 29原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值