V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Arthar
V2EX  ›  Android

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

  •  
  •   Arthar · 2016-12-27 11:14:03 +08:00 · 10186 次点击
    这是一个创建于 2880 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想找出外部存储上 mp4 、 mkv 等格式的视频文件,于是用广度优先把除"./"开头的隐藏目录都遍历了一次。但是这样的效率比较低。

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

    PS1 ,这 TMD 是我 5 年前做山寨平板的需求。
    PS2 , AndroidN 还有以后的版本能不能这么干都是问号。
    Arthar
        9
    Arthar  
    OP
       2016-12-27 11:41:51 +08:00
    @little_cup MediaStore 并不能满足需求,想拿到路径后获取视频文件里更多的信息。 MediaStore 能读出来的信息不够。但是 MediaStore 录入视频的算法倒是非常有兴趣,还没看这方面的相关资料
    little_cup
        10
    little_cup  
       2016-12-27 11:46:02 +08:00
    @Arthar 必须要求文件路径这个需求就是错的,这样做下来只会导致各种不兼容网盘以及 multi-user 等 Android 框架内的合理情况。
    当然如果你们是定制早教机之类的当我没说。
    little_cup
        11
    little_cup  
       2016-12-27 11:48:11 +08:00
    另外楼上说的 N 以后权限收紧的情形也必须考虑。
    paradoxs
        12
    paradoxs  
       2016-12-27 11:49:42 +08:00
    怎么可能让你遍历? 隐私还要不要了。。
    Arthar
        13
    Arthar  
    OP
       2016-12-27 11:51:26 +08:00
    @little_cup 不是什么硬性需求,纯粹是用开源播放器做 demo 玩的,目前就是自己遍历的效率有些低才想有没有地方可以提高
    Arthar
        14
    Arthar  
    OP
       2016-12-27 11:52:18 +08:00
    @little_cup 权限适配是另一个问题了
    zhouquanbest
        15
    zhouquanbest  
       2016-12-27 11:55:59 +08:00
    还记得 Keep 当年做这个功能 SB 到在每个文件夹下放了他的索引文件。。。。
    这种流氓实现就别干了吧
    Arthar
        16
    Arthar  
    OP
       2016-12-27 12:28:51 +08:00
    @besto 边扫边显示确实是个好主意
    Arthar
        17
    Arthar  
    OP
       2016-12-27 12:35:38 +08:00
    @zhouquanbest 电脑系统上不是还存在着的 Thumbs.db 么- -
    lfk0000
        18
    lfk0000  
       2016-12-27 12:56:20 +08:00
    借贴求安卓上类似 win 下 everything 的软件。。。(我还以为本帖是在说这个呢。。。
    xiandao7997
        19
    xiandao7997  
       2016-12-27 13:11:43 +08:00
    @lfk0000 不一定能有吧。。 everything 利用了 NTFS 的一些特性,安卓上有没有类 everything 的软件要看安卓的文件系统有没有类似的特性
    AnonymousID
        20
    AnonymousID  
       2016-12-27 13:45:24 +08:00 via Android   ❤️ 1
    @xiandao7997 安卓上有 everything 这个软件的哦
    xiandao7997
        21
    xiandao7997  
       2016-12-27 13:46:46 +08:00 via Android
    xiandao7997
        22
    xiandao7997  
       2016-12-27 13:47:47 +08:00 via Android
    @AnonymousID 作用是全局快速搜索文件吗?
    Chrisplus
        23
    Chrisplus  
       2016-12-27 14:04:15 +08:00
    如果是自己去扫的话,怎么扫都快不了。 Android 提供的方案还有一些第三方的软件与库很多都是通过维护索引加上通知接收计划任务等方式完成的。
    pcatzj
        24
    pcatzj  
       2016-12-27 14:28:04 +08:00
    以前有个播放器(忘了是什么了),只会默认扫描 Video 这种多媒体文件夹,其他的就需要用户手动选择路径了,我感觉这样还是比较合理的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5383 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 08:23 · PVG 16:23 · LAX 00:23 · JFK 03:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.