
本文面向 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 新能力与开发入口