Flutter for OpenHarmony: Flutter 三方库 glob 像在 Linux 终端一样灵活匹配鸿蒙应用文件路径(大规模文件管理神器)

Flutter for OpenHarmony: Flutter 三方库 glob 像在 Linux 终端一样灵活匹配鸿蒙应用文件路径(大规模文件管理神器)

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net

前言

在 OpenHarmony 应用开发中,处理大规模的文件操作是常见的需求。例如:

  1. 清理缓存:需要删除 cache 目录下所有的 .tmp 文件。
  2. 多媒体扫描:需要找出 DCIM 目录及其所有子目录下包含 2026-02.jpg 片。
  3. 打包工具:需要排除所有 .dart 源文件但保留 .js 产物。

如果使用原生的 Directory.list 配合手写正则匹配,代码不仅晦涩难懂,且效率低下。glob 系统通过标准的通配符(Wildcard)语法(如 **/*.png),为你提供了一套极其直观、强大的跨平台文件定位方案。


一、通配符逻辑解析

glob 将模式字符串转化为高效的路径扫描递归机。

排除

表达式: 'lib/**/*.dart'

Glob 匹配引擎

匹配 [lib/a.dart, lib/src/b.dart]

忽略 [ohos/entry/x.cpp]


二、核心 API 实战

2.1 递归查找特定文件

import'package:glob/glob.dart';import'package:glob/list_local_fs.dart';// 💡 必须引入此扩展以支持本地文件系统voidfindImages(){// 💡 定义模式:在 assets 下递归找所有 png 或 jpgfinal imageFinder =Glob("assets/**/*.{png,jpg}");// 💡 全局列出for(var entity in imageFinder.listSync()){print('发现鸿蒙资源文件: ${entity.path}');}}
在这里插入图片描述

2.2 逻辑排除与组合

// 排除 test 目录下的所有临时文件final cleaner =Glob("test/**/!(*.temp)");
在这里插入图片描述

三、常见应用场景

3.1 鸿蒙端侧“文件管理器”核心

实现全局搜索功能。用户输入 *.pdf,后台利用 glob 库快速在用户的 Documents 目录进行零配置匹配检索。

3.2 自定义构建任务

在开发针对鸿蒙平台的 Flutter 辅助脚本时,利用 glob 快速收集需要混淆的代码路径或需要压缩的图片路径,极简地替代复杂的 Shell 指令。


四、OpenHarmony 平台适配

4.1 适配鸿蒙沙箱目录路径

💡 技巧:鸿蒙的应用沙箱路径往往带有独特的哈希前缀或特定的挂载点(如 /data/storage/el2/base/...)。glob 基于 Dart 的 io 实现,它不需要平台特定的 FFI 接口,因此在鸿蒙的文件层级中具有完美的“穿透力”。只要提供正确的根路径,通配符匹配在鸿蒙真机上表现得如履平地。

4.2 性能优化建议

大规模递归扫描会触及磁盘 IO。在鸿蒙设备上运行长路径匹配时,建议使用 list() 的非阻塞异步方法,配合 take() 限流,防止因一次性列出过多文件对象而导致的鸿蒙应用内存抖动。


五、完整实战示例:鸿蒙日志自动清理引擎

本示例展示如何利用 glob 匹配并删除七天前的过期日志文件。

import'dart:io';import'package:glob/glob.dart';import'package:glob/list_local_fs.dart';classOhosStorageCleaner{/// 清理过期的加密日志voidpurgeOldLogs(String baseDir){print('🧹 正在扫描鸿蒙文件系统冗余节点...');// 💡 匹配所有 log 目录下,文件名包含 'old_' 的 .dat 文件final logPattern =Glob("$baseDir/logs/**/old_*.dat"); int count =0;for(var entity in logPattern.listSync()){if(entity isFile){// 执行删除 entity.deleteSync(); count++;}}print('✅ 清理完毕:共释放了 $count 个鸿蒙存储节点');}}voidmain(){final cleaner =OhosStorageCleaner(); cleaner.purgeOldLogs('/data/storage/el2/base/files');}
在这里插入图片描述

六、总结

glob 软件包是 OpenHarmony 开发者在文件 IO 领域的“瑞士军刀”。它将原本枯燥、易错的递归目录遍历逻辑,转化为了几乎所有人都能读懂的声明式通配符表达式。在开发具有复杂文件整理、大规模资源预处理能力的鸿蒙原生应用时,掌握并集成这套“路径魔法”,是提升工程整洁度和开发效能的必由之路。

Read more

U-Boot 和 Linux 内核的关系及设备树详解

U-Boot 和 Linux 内核的关系及设备树详解

🔥作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生,研究方向无线联邦学习 🎬擅长领域:驱动开发,嵌入式软件开发,BSP开发 ❄️作者主页:一个平凡而乐于分享的小比特的个人主页 ✨收录专栏:操作系统,本专栏为讲解各操作系统的历史脉络,以及各性能对比,以及内部工作机制,方便开发选择 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 U-Boot 和 Linux 内核的关系及设备树详解 一、U-Boot 和 Linux 内核的关系 系统启动流程全景图 ┌─────────────────────────────────────────────────────┐ │ 嵌入式系统启动流程 │ ├─────────────────────────────────────────────────────┤ │ 阶段 1:硬件复位 → BootROM(固化在芯片中) │ │ ↓ │ │ 阶段 2:U-Boot(第一阶段:SPL) │ │ ↓ │ │ 阶段 3:U-Boot(第二阶段:主程序) │ │ ↓ │ │ 阶段 4:Linux 内核(内核初始化)

By Ne0inhk
【Milvus】安装 Milvus:Docker、Docker Compose、Kubernetes

【Milvus】安装 Milvus:Docker、Docker Compose、Kubernetes

Milvus 提供了多种部署方式,包括 Docker(单机部署)、Docker Compose(单机多容器部署)以及 Kubernetes(分布式集群部署)。以下是对这三种安装方式的详细介绍,包括先决条件、步骤、配置文件和注意事项,帮助完成安装。 1. 先决条件 在安装 Milvus 之前,确保满足以下条件: 通用要求: * 操作系统:Linux(推荐 Ubuntu 20.04 或 CentOS 7+)、macOS 或 Windows(需要 WSL2 支持)。 * 硬件要求: * 单机模式(Docker 或 Docker Compose):至少 8GB 内存、4 核 CPU、

By Ne0inhk
《Linux 进程管理进阶:会话、进程组与守护进程的底层逻辑与实践》

《Linux 进程管理进阶:会话、进程组与守护进程的底层逻辑与实践》

前引:在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”! 目录 【一】会话 【二】前/后台进程 前台切后台进程: 查看后台进程: 后台切前台进程: 暂停后台进程: 继续运行后台进程: 【三】进程组与守护进程 (1)查看进程组 (2)守护进程 (3)守护进程原理 (4)如何创建守护进程 【一】会话 “会话”可理解为一个区域,通常一个用户登录就是一个会话,

By Ne0inhk
OpenClaw多设备协同:手机+电脑分布式节点,跨端任务自动化

OpenClaw多设备协同:手机+电脑分布式节点,跨端任务自动化

文章目录 * 当"用手机修电脑"不再是段子 * 架构揭秘:Gateway是大脑,Nodes是手脚 * 动手实战:把你的手机变成AI的外挂设备 * 第一步:确认Gateway处于"远程模式" * 第二步:手机端配对流程 * 第三步:验证节点能力 * 场景实战:那些只有多设备协同才能干成的活儿 * 场景一:移动端触发,PC端执行(Mobile-to-Desktop) * 场景二:PC端决策,移动端采集(Desktop-to-Mobile) * 场景三:多节点并行任务(Swarm模式) * 技术原理:MCP协议让万物互联成为可能 * 避坑指南:别让你的分布式系统变成"分布死"系统 * 网络连通性是第一要义 * 权限管理要精细 * 电池与性能考虑 * 未来展望:从"多设备"到&

By Ne0inhk