android开发 文件浏览器,Android实现一个简单的文件浏览器

有时候会碰到一些文件浏览的需求,但是App本身又并非一个文件管理相关的App,可能只是某个功能,需要让用户来选择文件进行后续操作。所以这里只是为了实现一个简单的文件浏览的功能,如果需要实现一整套文件管理的功能,请换方案或者自行添加功能。

文件浏览的常用实现

文件浏览的功能,实现方式有好几种,这里介绍几种常用的方式:

使用MediaStore方式,直接获取到所有的有效文件,再进行文件夹组合。

使用Runtime.getRuntion().exec("cmdline")直接执行命令行命令,然后解析返回结果。

使用File类的方式来访问目录之下所有的文件。

现在来分析分析三种有什么优缺点:

MediaStore

MediaStore会在系统内部维护一张SQLite表,然后通过ContentResolver的方式就可以获取到SQLite表中记录的文件。通过MediaStore可以很方便的写类似SQL语句来进行查询,并且文件的格式、名称、尺寸等,都有特定的字段去标识。

下面给出一个external.db的SQLite表结构:

4a7050d5a386dedb9bb9a26cebc427fd.png

external.png

从图中可以看到,external.db中包含了一个“files”的Table,内部维护了外部存储器里所有需要被维护的文件。而它还有对特定类型的文件类型进行了视图显示,例如:Images、video。

如果仅仅是需要做到文件浏览,可以直接通过MediaStore分别查询内部存储器和外部存储器的files表即可。

file表的结构如下图:

da98b181eea08242dcd232a53943c9a2.png

table_files.png

使用MediaStore使用起来非常的方便,详细的使用方式这里就不介绍了。但是使用MediaStore还是有一些问题的,例如第三方App保存的文件,如果第三方App没有处理的话,可能你需要等到下次重启之后,才能通过MediaStore扫描到,它会在重启、Sdcard装载等时机,重新扫描刷新。当然也有办法自动去刷新,只需要发送一个对应的Broadcast即可,但是也是有坑的,大概是在Android 4.0+之后,只能指定目录进行刷新,所以需要维护大量的目录来做。这里就不展开讨论了,具体的可以自行百度。

CmdLine

使用Runtion.getRuntion.exec()的方式直接执行例如:cd、ls等命令行命令,然后读取输出结果进行解析,就可以拿到对应目录下的文件信息。这种方式使用起来其实也非常的方便,而且效率也是有保障的,但是解析数据上,操作的数据是大量的String,可能在开发的时候,不够直观需要处理各种占位、符换行符等问题上耗时。

至于如何使用R

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值