资讯动态

六类文件入库:鸿蒙文件库种子数据与浏览效果

发布时间:2026/8/17 19:17:22 来源:尧图企业网站定制
实例文件资料库FileLib技术18 个文件、六类覆盖、路径唯一一、种子数据的设计目标实例 16 的种子数据要撑起「文件浏览器 类型筛选 搜索 统计」设计目标18 个文件列表内容充实——多屏可滚六类覆盖文档 4 / 图片 3 / 视频 3 / 音频 2 / 压缩包 4 / 其他 2——每个类型筛选有结果大小梯度800KB ~ 800MB——fmtSize 换算覆盖 KB/MB 两级、总大小可观标签丰富tags 多词——LIKE 搜索「需求」「发布」等能命中多个文件路径唯一path 各不相同——演示 UNIQUE 去重创建时间递进30 小时前 ~ 13 小时前——倒序列表「新文件在前」。二、18 个文件种子数据#名称类型大小路径标签备注1项目需求文档.docx文档2.3MB/docs/需求/项目需求文档.docx需求,产品V2.3 已评审2接口设计说明.pdf文档5MB/docs/设计/接口设计说明.pdf接口,后端3会议纪要 0620.docx文档800KB/docs/会议/会议纪要0620.docx会议,周会待办 5 项4用户手册终稿.pdf文档8MB/docs/文档/用户手册终稿.pdf手册,发布5产品原型图.png图片3.5MB/images/原型/产品原型图.png原型,UI首页改版6启动页背景.jpg图片4MB/images/品牌/启动页背景.jpg品牌,视觉4K 原图7活动海报.psd图片25MB/images/市场/活动海报.psd海报,市场618 活动8功能演示录屏.mp4视频120MB/videos/演示/功能演示录屏.mp4演示,测试1080P9发布会宣传片.mp4视频350MB/videos/市场/发布会宣传片.mp4宣传,品牌剪辑版10培训课程录像.mp4视频800MB/videos/培训/培训课程录像.mp4培训,课程11产品宣传曲.mp3音频8MB/audio/品牌/产品宣传曲.mp3音乐,品牌主题曲12采访录音剪辑.mp3音频15MB/audio/采访/采访录音剪辑.mp3采访,媒体13发布包 v2.3.0.zip压缩包60MB/release/v2.3.0/发布包v2.3.0.zip发布,版本正式版14素材合集.rar压缩包200MB/archive/素材/素材合集.rar素材,图片供设计师15旧版备份.zip压缩包90MB/archive/备份/旧版备份.zip备份,归档v1.0 源码16字体安装包.zip压缩包30MB/archive/字体/字体安装包.zip字体,设计17技术分享 PPT.pptx其他12MB/share/技术分享PPT.pptxPPT,分享RDB 实战18行业报告 2024.xlsx其他6MB/data/行业报告2024.xlsx数据,报告设计要点类型分布文档 4 / 图片 3 / 视频 3 / 音频 2 / 压缩包 4 / 其他 2——GROUP BY 统计文档 4 个排第一cnt DESC、音频/其他 2 个最少大小梯度800KB会议纪要~ 800MB培训录像——fmtSize 显示「800 KB」「2.3 MB」「800.0 MB」总大小约 1.7GB标题栏「共 1.7GB」标签交叉「发布」命中用户手册终稿 发布包「品牌」命中启动页背景 发布会宣传片 产品宣传曲——LIKE 搜索演示多命中路径唯一18 条 path 各不相同——UNIQUE 约束无冲突batchImport 跳过逻辑不触发教学数据时间递进30h ~ 13h 前递减——列表顶部是「项目需求文档」最新导入不对是 created_time 最早的是 30h 前——ORDER BY created_time DESC 是「时间新在前」30h 前最旧在底部13h 前的行业报告最新在顶部。三、代码实现constnowDate.now();constmb1048576;constseed:FileSeed[][/* 18 个见第二节表格 */];for(constsofseed){constvalues:relationalStore.ValuesBucket{name:s.name,file_type:s.fileType,size:s.size,path:s.path,tags:s.tags,note:s.note,created_time:s.createdTime,};awaitstore.insert(FileLibDao.TABLE,values);}hilog.info(DOMAIN,TAG,已填充 18 个文件种子数据);const mb 10485761MB 的字节数常量——种子大小用2 * mb 300 * 10242.3MB表达可读性优于裸数字。幂等保护查 file_lib COUNT非空即返回。四、注入后的文件库效果预测区块预期效果标题栏「18 个文件 · 共 1.7GB」类型筛选条全部/文档/图片/视频/音频/压缩包/其他动态生成文件列表18 行 文档最新导入在前→ ️️️ → → → ️️️️ → 搜索「需求」项目需求文档.docx名称 标签含需求的文件搜索「发布」用户手册终稿.pdf 发布包 v2.3.0.zip标签命中点「视频」3 行 120MB / 350MB / 800MB演示脚本指着标题栏说「文件库 18 个文件总共 1.7GB」→ 划列表「文档最多4 个音频最少2 个」→ 搜索框输「发布」→ 列表只剩「用户手册终稿」和「发布包」→ 清空 → 点「视频」→ 3 个视频文件功能演示录屏 120MB、发布会宣传片 350MB、培训课程录像 800MB。五、验证方法hilog 日志搜FileLibDao看到「已填充 18 个文件种子数据」页面显示标题栏「18 个文件 · 共 1.7GB」、列表 18 行、类型筛选条 7 项数据库直查SELECTCOUNT(*)FROMfile_lib;-- 18SELECTfile_type,COUNT(*),SUM(size)FROMfile_libGROUPBYfile_typeORDERBYCOUNT(*)DESC;-- 文档 4 / 图片 3 / 视频 3 / 压缩包 4 / 音频 2 / 其他 2SELECTnameFROMfile_libWHEREnameLIKE%需求%ORtagsLIKE%需求%;-- 项目需求文档.docx 标签含需求者SELECTSUM(size)FROMfile_lib;-- ≈1.7GBSELECTnameFROMfile_libORDERBYcreated_timeDESCLIMIT3;-- 行业报告2024.xlsx / 技术分享PPT.pptx / 字体安装包.zip最新在前交互验证搜索、类型筛选、删除文件标题栏计数减一。六、FAQQ1为什么文档 4 个最多、音频 2 个最少A真实文件库的分布——文档需求/设计/会议/手册数量最多、音频宣传曲/采访最少。GROUP BY 的 cnt DESC 排序让「文档 4」排第一类型筛选条的动态选项与统计一致。Q2搜索「发布」为什么命中两个文件A「用户手册终稿.pdf」tags 含「发布」、「发布包 v2.3.0.zip」名称含「发布」——LIKE OR 搜索的「名称或标签任一命中」。演示了搜索的跨字段命中能力。Q3800MB 的视频和 800KB 的文档怎么显示大小AfmtSize 分级换算——800KB → 「800 KB」KB 级、2.3MB → 「2.3 MB」MB 级 1 位小数、800MB → 「800.0 MB」。同屏多种单位正是 fmtSize 的价值按数量级选单位。Q4路径里的目录层级/docs/需求/有意义吗A模拟真实文件系统路径——path 是业务唯一键同一路径不重复导入。Demo 不解析目录层级真实文件管理器按路径前缀做「文件夹导航」。路径的目录结构为进阶功能预留。Q5为什么种子不用「当前时间 ± 随机」A固定偏移now - 30h ~ now - 13h让列表顺序确定行业报告最新在顶——演示可复现。随机时间会让每次启动列表顺序不同教学演示不稳定。种子的确定性优于随机性。Q618 个文件够演示吗A列表约一屏半每行 ~70px × 18 ≈ 1260px——滚动演示充分类型筛选每类 2~4 个有内容搜索「发布」命中 2 个、「需求」命中 1 个标签。数量平衡「列表充实」与「筛选可辨」。七、文章小结本篇文章展示了实例 16 的种子数据18 个文件六类覆盖文档 4/图片 3/视频 3/音频 2/压缩包 4/其他 2 大小 800KB~800MB 梯度 标签交叉 路径唯一 时间递进。核心是「搜索与统计的种子设计」——标签交叉让 LIKE 搜索多命中、「发布」跨字段命中 2 个文件、类型分布让 GROUP BY 统计有序。文件浏览器一开屏就内容丰富、搜索有结果。下一篇16-5是实例 16 的收官文章展示 FileLibPage 全量代码与运行效果。八、种子清单补全18 条完整数据与时间偏移第二节的表格给了名称/类型/大小/路径/标签/备注本节补全「时间偏移」维度——每条种子用now - N * H生成 created_time30h 递减到 13h保证 ORDER BY created_time DESC 后「最新导入在前」可复现#名称类型大小路径标签备注时间偏移1项目需求文档.docx文档2.3MB/docs/需求/项目需求文档.docx需求,产品V2.3 已评审now-30h2接口设计说明.pdf文档5MB/docs/设计/接口设计说明.pdf接口,后端now-29h3会议纪要 0620.docx文档800KB/docs/会议/会议纪要0620.docx会议,周会待办 5 项now-28h4用户手册终稿.pdf文档8MB/docs/文档/用户手册终稿.pdf手册,发布now-27h5产品原型图.png图片3.5MB/images/原型/产品原型图.png原型,UI首页改版now-26h6启动页背景.jpg图片4MB/images/品牌/启动页背景.jpg品牌,视觉4K 原图now-25h7活动海报.psd图片25MB/images/市场/活动海报.psd海报,市场618 活动now-24h8功能演示录屏.mp4视频120MB/videos/演示/功能演示录屏.mp4演示,测试1080Pnow-23h9发布会宣传片.mp4视频350MB/videos/市场/发布会宣传片.mp4宣传,品牌剪辑版now-22h10培训课程录像.mp4视频800MB/videos/培训/培训课程录像.mp4培训,课程now-21h11产品宣传曲.mp3音频8MB/audio/品牌/产品宣传曲.mp3音乐,品牌主题曲now-20h12采访录音剪辑.mp3音频15MB/audio/采访/采访录音剪辑.mp3采访,媒体now-19h13发布包 v2.3.0.zip压缩包60MB/release/v2.3.0/发布包v2.3.0.zip发布,版本正式版now-18h14素材合集.rar压缩包200MB/archive/素材/素材合集.rar素材,图片供设计师now-17h15旧版备份.zip压缩包90MB/archive/备份/旧版备份.zip备份,归档v1.0 源码now-16h16字体安装包.zip压缩包30MB/archive/字体/字体安装包.zip字体,设计now-15h17技术分享 PPT.pptx其他12MB/share/技术分享PPT.pptxPPT,分享RDB 实战now-14h18行业报告 2024.xlsx其他6MB/data/行业报告2024.xlsx数据,报告now-13h第 1 条最旧30h 前在列表底部、第 18 条最新13h 前在顶部——每行递减 1 小时等差序列便于教学推演。九、种子设计复盘六类分布、大小梯度、标签交叉1. 六类分布筛选条与统计表同源类型数量总大小代表文件文档416.1MB用户手册终稿.pdf8MB图片332.5MB活动海报.psd25MB视频31.27GB培训课程录像.mp4800MB音频223MB采访录音剪辑.mp315MB压缩包4380MB素材合集.rar200MB其他218MB技术分享PPT.pptx12MB合计18≈1.74GB—数量分布 4/3/3/2/4/2 让 GROUP BY cnt DESC 有明确的排序结果大小分布让视频独占 1.27GB总大小 73%——标题栏「共 1.7GB」有分量。2. 大小梯度fmtSize 的三级换算数量级文件数fmtSize 显示示例1MB1800 KB会议纪要1~10MB72.3 MB / 5 MB / 8 MB10~100MB625 MB / 60 MB / 90 MB100MB4200 MB / 350 MB / 800 MB四个数量级全覆盖——fmtSize 的 KB/MB 分支都被真实数据「点亮」同屏出现「800 KB」「2.3 MB」「800.0 MB」三种格式是换算函数最好的演示数据。3. 标签交叉一次搜索命中多个文件关键词命中文件命中方式品牌启动页背景.jpg、发布会宣传片.mp4、产品宣传曲.mp3标签命中 3 个发布用户手册终稿.pdf标签 发布包 v2.3.0.zip名称跨字段命中 2 个需求项目需求文档.docx名称名称命中 1 个「品牌」命中 3 个靠标签交叉——三个文件分属图片/视频/音频共享「品牌」标签「发布」命中 2 个靠跨字段——一个在 tags、一个在 name演示 LIKE OR 的「名称或标签任一命中」。命中数 3→2→1 刻意递减演示三种搜索形态。十、initSeedData 完整实现mb 常量与时间递进staticasyncinitSeedData(context:common.Context):Promisevoid{conststoreawaitFileLibDao.getStore(context);// 幂等保护文件表非空即视为已初始化直接返回constcountawaitFileLibDao.countAll(context);if(count0){hilog.info(DOMAIN,TAG,文件库已有数据 %{public}d 条跳过种子填充,count);return;}constnowDate.now();constmb1048576;// 1MB 字节常量size 统一用它换算constH3600*1000;// 1 小时毫秒created_time 按小时递进constseed:FileSeed[][{name:项目需求文档.docx,fileType:文档,size:2.3*mb,path:/docs/需求/项目需求文档.docx,tags:需求,产品,note:V2.3 已评审,createdTime:now-30*H},// ……其余 17 条按第八节表格展开createdTime 从 now-29h 递减到 now-13h];for(constsofseed){constvalues:relationalStore.ValuesBucket{name:s.name,file_type:s.fileType,size:s.size,path:s.path,tags:s.tags,note:s.note,created_time:s.createdTime,};awaitstore.insert(FileLibDao.TABLE,values);}hilog.info(DOMAIN,TAG,已填充 18 个文件种子数据);}const mb 10485762.3 * mb比裸写2411725可读——一眼看出「2.3MB」const H 3600 * 1000now - 30 * H比now - 108000000直观——「30 小时前」的语义进代码时间递进第 1 条 30h → 第 18 条 13h 等差递减配合 ORDER BY created_time DESC列表顺序稳定可复现行业报告最新在顶。十一、注入后的文件库效果预测与验证 SQL区块预期效果验证点标题栏「18 个文件 · 共 1.7GB」SUM(size) ≈ 1.74GB类型筛选条全部 6 类 7 项GROUP BY 统计驱动文件列表18 行行业报告在顶、项目需求文档在底ORDER BY created_time DESC搜索「品牌」3 个文件背景/宣传片/宣传曲标签 LIKE 多命中点「视频」3 行120MB / 350MB / 800MBfile_type ‘视频’-- ① 总数与总大小SELECTCOUNT(*)FROMfile_lib;-- 18SELECTROUND(SUM(size)/1048576.0/1024,2)FROMfile_lib;-- ≈1.74-- ② 六类统计cnt DESCSELECTfile_type,COUNT(*)AScnt,SUM(size)AStotalFROMfile_libGROUPBYfile_typeORDERBYcntDESC;-- ③ 标签交叉搜索SELECTname,tagsFROMfile_libWHEREtagsLIKE%品牌%;-- 3 行SELECTnameFROMfile_libWHEREnameLIKE%发布%ORtagsLIKE%发布%;-- 2 行-- ④ 时间递进验证最新 3 条SELECTname,created_timeFROMfile_libORDERBYcreated_timeDESCLIMIT3;十二、FAQ种子补全问答Q1时间偏移为什么 30h 递减到 13h而不是递增Acreated_time 越大越新——13h 前的行业报告最新DESC 排序后在列表顶部符合「新文件在前」的直觉若递增顶部会是最旧的 30h 文件。递减偏移 DESC 排序 演示顺序可控。Q2为什么大小要覆盖 800KB 到 800MB 四个数量级AfmtSize 按字节数量级选单位——只有种子同时含 KB 级、MB 级、百 MB 级数据才能同屏展示「800 KB / 2.3 MB / 800.0 MB」三种格式若全部 2~5MBfmtSize 会退化成「永远显示 MB」。梯度是给换算函数「出题」。Q3幂等保护只查 COUNT够吗A够——种子仅在首次启动填充之后用户增删文件COUNT 0 即跳过不会重复注入 18 条。严格按路径去重可逐条 EXISTS 判断但批量场景 COUNT 保护已满足「不重复初始化」。教学场景用简单可靠的方案。Q4为什么「品牌」命中 3 个、「发布」2 个、「需求」1 个A刻意设计成三种命中数——「品牌」靠标签交叉跨图片/视频/音频三类、「发布」靠跨字段标签名称、「需求」靠名称。演示时依次输入三个词搜索列表 3 行→2 行→1 行直观展示 LIKE OR 的命中差异。命中数递减 搜索演示有层次。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价