侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

图片整理寄存中心

Dettan
2022-04-30 / 0 评论 / 0 点赞 / 98 阅读 / 1,268 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
封装成jar,连接远程数据库,打开之后跑一个服务器,然后打开网页. 就是选择文件的时候有点麻烦
图片列表仿照这个站
图片用css3的grid,可以插位
不需要排序, 就是变成同等高度,能放下就放,放不下也放.

0.5625
0.66625
0.7149532710280374
0.87890625
0.998125
1
1
1.4764044943820225
1.4981273408239701
1.5009380863039399
1.5009380863039399
1.5009380863039399
1.5009380863039399
1.6
1.6
1.680672268907563
1.7241379310344827
1.7793594306049823
1.7777777777777777         1920*1080
1.7777777777777777
1.7777777777777777
1.9607843137254901
2.2535211267605635
2.37037037037037            2560*1080
3.4334763948497855

手机端
Android扫描文件并统计各类文件数目
最近在模仿小米的文件管理器写一个自己的文件管理器,其中有一个功能是全盘扫描文件并显示每类文件的数目。刚开始使用单一线程,扫描速度简直惨不忍睹,换成多线程扫描以后,速度有较明显的提升,便封装了一个工具类,分享出来。 一、遇到的问题 首先描述一下遇到的问题: 1 . Android端全盘扫描文件 2 . 开一个子线程扫描太慢,使用多线程扫描 3 . 统计每一类文件的数目(比如:视频文件,图片文件,音频文件的数目) 二、解决思路 接下来描述一下几个点的解决思路: 1 . 首先目录的存储结构是树状结构,这里就设计到了树的遍历,这里我使用树的 层次遍历 ,使用非递归方法实现,具体的遍历思路后面会有代码,这里只说明是借助于队列完成树的层次遍历。 2 . 第二个思路便是我们需要传入的参数,这里其实涉及到的是数据的存储结构问题,这里我使用的数据结构如下: 解释一下这个数据结构,map的key表示种类,value是个Set这个Set里面包含该种类的文件的后缀名。如下: 这里的后缀为什么使用Set来存储呢,主要是考虑到后面需要涉及到查找(获得一个文件的后缀,需要在查找属于哪个类别),Set的查找效率比较高 3 . 前面说了目录的遍历需要借助于队列进行层次遍历,又因为是多线程环境下,所以我们选用线程安全的队列 ConcurrentLinkedQueue ConcurrentLinkedQueue mFileConcurrentLinkedQueue; 4 . 还有需要将统计结果进行存储,这里我也选用了线程安全的HashMap 这个Map的key表示文件种类,value表示该类文件的数目,由于涉及到多线程访问,所以选用了线程安全的 ConcurrentHashMap 5 . 多线程问题,这里我选用了固定线程数目的线程池,最大线程数目是CPU核心数 final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()) 6 . 数据传递问题,由于Android不能在子线程更新UI,所以这里需要传入Handler,将最终统计结果传递到UI线程并显示 三、实战编码 首先放上代码 上面代码中关键的点都有注释或者是前面已经讲到了,下面说几点补充: 1 .
https://blog.csdn.net/bingjianit/article/details/78822490
上面这个博主有一个开源的java仿小米的文件管理器,正好能用。

电脑端
文件扫描太慢,考虑用jni调用Everything的c++ API读取,它是使用NTFS文件系统的USN日志特性实现的,非常快。


0

评论区