HarmonyOS 7 文件与媒体业务 02|文档导入:从文件选择到内容校验

发布时间:2026/10/22 7:37:49

HarmonyOS 7 文件与媒体业务 02|文档导入:从文件选择到内容校验 本文面向 HarmonyOS 7 应用开发。涉及系统能力时以项目实际安装 SDK 的 API、权限及设备支持为准下文代码注明为局部示例不构成完整可运行工程。能选中文件不代表能直接解析客户把一个名叫“名单.csv”的文件导入应用界面提示成功打开后却只有一列乱码。原因可能是编码也可能是分隔符甚至文件本来就不是 CSV。文件选择器解决的是“用户选了什么”业务还要回答“这个文件是否符合导入约定”。在鸿蒙应用里可以通过 Core File Kit 的文件选择能力取得用户选择的资源。不要为了导入一份文档去扫描公共目录。选中以后先检查元信息再读取有限内容最后才进入完整解析。给导入建立明确的合同假设我们导入客户名单合同应写清楚只接受 UTF-8 CSV首行为姓名、手机号、城市最多一万行文件上限由业务确定。大小和行数是产品规则不是系统默认值。把这些条件放在选择入口附近错误发生时也容易解释。导入可拆为“选择—读取—解析—校验—预览—确认写入”。解析阶段只生成候选记录不直接改变现有名单。预览页显示有效行、重复行和错误行用户确认之后再提交。下面是一个纯业务校验片段不调用文件 APIinterfaceContactRow{name:string;phone:string;}functionvalidateContact(row:ContactRow):string{if(row.name.trim().length0)return姓名不能为空;if(!/^1[3-9]\d{9}$/.test(row.phone.trim())){return手机号格式不符合本次导入规则;}return;}手机号规则只适用于本例的中国大陆移动号码业务不应复用成全球电话号码标准。不要用 split 充当完整 CSV 解析器字段可能包含引号、逗号和换行。例如地址“上海市,浦东新区”是一个字段不能按每个逗号拆开。选用解析方案时必须用这些输入验证。读取大文件还应设置字节上限和记录上限不要先把全部内容放入内存再发现超限。导入时给每行保留原始行号。用户看到“第38行手机号为空”就能定位只看到“格式错误”只能重新猜。错误报告可提供下载但应避免在报告中额外扩散不必要的个人信息。重复导入要提前定义同一个文件点两遍确认是新增两份还是自动去重建议由稳定的业务键决定例如客户编号。文件名不能承担这项职责因为不同文件可以同名同一文件也可以改名。如果写入过程中失败采用事务或可恢复的批次设计让用户知道已经写入多少、还剩多少。不要返回一个笼统的失败后让用户再次导入造成重复。验收时准备空文件、错误扩展名、带引号字段、含表头但无数据、超限文件和重复文件。把这六类都处理清楚导入功能才从“开发机能跑”变成了“用户能放心使用”。官方参考华为开发者文档HarmonyOS 7 新能力与开发入口
延伸阅读

更多相关文章

2026/10/22 7:37:49

HarmonyOS 7 文件与媒体业务 01|照片选择:系统选图与授权边界

本文面向 HarmonyOS 7 应用开发。涉及系统能力时,以项目实际安装 SDK 的 API、权限及设备支持为准;下文代码注明为局部示例,不构成完整可运行工程。 不是每个选图功能都需要遍历图库 做报销附件时,很容易先想到申请照片权限&…

2026/10/22 7:32:49

Linux --DNS与ICMP

DNS:互联网的“电话簿”是怎么进化来的没有 DNS 的年代:hosts 文件的痛TCP/IP 通信靠的是 IP 地址 端口号。但 IP 地址是一串数字,人记不住。于是早期人们用 hosts 文件 来维护“主机名 → IP”的映射。用户输入 host-a,计算机查…

2026/10/22 8:53:24

TCP长肥管道与RFC 1323调优实战指南

1. 什么是“长肥管道”?——从一次真实丢包事故说起 我第一次真正意识到“长肥管道”不是教科书里的抽象概念,是在某次为某高校实验室部署远程图像采集系统时。那套系统需要把高清显微镜视频流实时传回本地工作站,链路跨了三个省,…

2026/10/22 8:53:24

BiLSTM+Attention关系抽取实战:数据处理、模型实现与调参

如果你是第一次在NLP课程作业里撞上“BiLSTMAttention做关系抽取”这个组合,我的建议是别急着到处抄代码。这个题目看起来只是把两个经典模块拼在一起,但真正做完之后你会发现,它其实把文本分类、序列建模、注意力机制、数据处理、实验分析这…

2026/10/22 8:53:24

Dlib人脸检测实战:从原理到课堂签到系统的踩坑与调优

收到一个做课堂签到小项目的需求,思路很简单:摄像头拍到人,系统自动识别身份。真正动手第一步就卡住了——不是最后比对环节的多难,而是最前面的人脸检测一直不稳。起初用的OpenCV Haar级联检测器,教室白板上的挂钟、海…

2026/10/22 8:53:24

Unity冒险游戏开发:MB903可复用骨架源码解析

简介:本资源是基于Unity3D引擎开发的完整冒险类游戏项目MB903,面向游戏开发初学者与Unity进阶学习者,聚焦实战化3D游戏设计能力培养。项目涵盖角色战斗系统(含‘死亡骑士’‘地狱骑士’BOSS战设计)、禅达酒店起始场景、…

2026/10/22 8:53:24

从零构建第一个AI智能体:函数调用、主循环与避坑全记录

人生第一个AI智能体跑通的那一刻,我盯着终端里那句“好的,已帮你把明天的会议提醒加进待办”,愣了几秒。代码量并不大:一个循环、几张工具表、一段系统提示词,但它确实能听懂自然语言,自己决定查天气、记待…

2026/10/22 8:48:14

HDFS数据本地性如何决定MapReduce性能

1. 从“写入一个文件”开始:HDFS与MapReduce不是两张皮,而是一套动作的上下半场很多人一提HDFS就只想到“存东西”,一说MapReduce就只记得“跑计算”,结果学完半年还分不清为什么WordCount里先要hadoop fs -put再hadoop jar——仿…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/22 0:01:49

电商智能运营体系从0到1:架构设计、落地步骤与避坑指南

前两年我们团队接了一个电商平台的运营中台项目,目标很直白:把过去靠运营拍脑袋做的选品、定价、发券、推活动这些事,逐步用数据算法和自动化流程代替。项目名字内部就叫“电商智能运营体系”。最近有不少朋友问我当时是怎么设计的、踩过哪些…

2026/10/22 0:01:49

若依框架AI代码生成不稳定?用Agent Skill三层结构+五步法搞定

最近一段时间,我一直想把后台管理系统里那些机械重复的增删改查代码交给AI去写。框架用的是若依,按理说这类业务代码模式非常固定,应该是AI最擅长的事情。可真试下来却不是那么回事——你让AI生成一个用户管理模块,它给出的Contro…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑