如何高效的遍历 Android 外部存储,找到自己需要的文件

2016-12-27 11:14:03 +08:00
 Arthar
想找出外部存储上 mp4 、 mkv 等格式的视频文件,于是用广度优先把除"./"开头的隐藏目录都遍历了一次。但是这样的效率比较低。

发现外部存储上有很多其他应用的文件夹,除 Android/<packagename>/路径外,很多应用还自己新建了文件夹,这些文件夹有没有什么共同的特征可以用来过滤掉呢?
7660 次点击
所在节点    Android
24 条回复
bic
2016-12-27 11:19:05 +08:00
mxplay
打开后后列出相应的视频文件
bic
2016-12-27 11:19:36 +08:00
MX Player
Arthar
2016-12-27 11:22:48 +08:00
@bic 要实现的是遍历文件的需求,并不是播放视频的需求啊
little_cup
2016-12-27 11:25:31 +08:00
cst4you
2016-12-27 11:29:56 +08:00
-_,- 你这样做跟流氓软件有什么区别哦
Arthar
2016-12-27 11:38:30 +08:00
@cst4you 这怎么就跟流氓软件扯上关系了......
loshine1992
2016-12-27 11:40:13 +08:00
ContentProvider + MediaStore 对应的列名查询。
besto
2016-12-27 11:40:50 +08:00
有一种东西叫 media scan ,会自己找的。
退一万步说,就算自己要实现去扫文件,如果别人外接了一个 2T 的硬盘,各种目录,各种媒体文件,你能保证效率吗?
优先使用 media scan 的结果, ls 有人贴了。即使要自己扫描,也是扫出多少显示多少,边扫边显示,优化好这个逻辑即可。

PS1 ,这 TMD 是我 5 年前做山寨平板的需求。
PS2 , AndroidN 还有以后的版本能不能这么干都是问号。
Arthar
2016-12-27 11:41:51 +08:00
@little_cup MediaStore 并不能满足需求,想拿到路径后获取视频文件里更多的信息。 MediaStore 能读出来的信息不够。但是 MediaStore 录入视频的算法倒是非常有兴趣,还没看这方面的相关资料
little_cup
2016-12-27 11:46:02 +08:00
@Arthar 必须要求文件路径这个需求就是错的,这样做下来只会导致各种不兼容网盘以及 multi-user 等 Android 框架内的合理情况。
当然如果你们是定制早教机之类的当我没说。
little_cup
2016-12-27 11:48:11 +08:00
另外楼上说的 N 以后权限收紧的情形也必须考虑。
paradoxs
2016-12-27 11:49:42 +08:00
怎么可能让你遍历? 隐私还要不要了。。
Arthar
2016-12-27 11:51:26 +08:00
@little_cup 不是什么硬性需求,纯粹是用开源播放器做 demo 玩的,目前就是自己遍历的效率有些低才想有没有地方可以提高
Arthar
2016-12-27 11:52:18 +08:00
@little_cup 权限适配是另一个问题了
zhouquanbest
2016-12-27 11:55:59 +08:00
还记得 Keep 当年做这个功能 SB 到在每个文件夹下放了他的索引文件。。。。
这种流氓实现就别干了吧
Arthar
2016-12-27 12:28:51 +08:00
@besto 边扫边显示确实是个好主意
Arthar
2016-12-27 12:35:38 +08:00
@zhouquanbest 电脑系统上不是还存在着的 Thumbs.db 么- -
lfk0000
2016-12-27 12:56:20 +08:00
借贴求安卓上类似 win 下 everything 的软件。。。(我还以为本帖是在说这个呢。。。
xiandao7997
2016-12-27 13:11:43 +08:00
@lfk0000 不一定能有吧。。 everything 利用了 NTFS 的一些特性,安卓上有没有类 everything 的软件要看安卓的文件系统有没有类似的特性
AnonymousID
2016-12-27 13:45:24 +08:00
@xiandao7997 安卓上有 everything 这个软件的哦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/330432

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX