鸿蒙ArkUI开发|文件路径管理好帮手pathlib 原创

BinaryBang
发布于 2025-7-6 00:35
浏览
0收藏

鸿蒙ArkUI开发|文件路径管理好帮手pathlib-鸿蒙开发者社区

前言

在鸿蒙开发中,避免不了对沙盒中的文件进行操作.最近遇到的一个问题是,将一个目录下的所有文件和文件夹全部删除,但是系统提供的fs对象只能删除一个空目录,对于非空目录进行处理,就会比较棘手.

解决方案

为了解决此类痛点,我们参考了Python中的pathlib的核心思想,在arkts中,实现了一套更加方便的处理文件管理的工具类pathlib.

上述问题在pathlib的加持下,只需要两步:

import { Path } from 'pathlib'

const dir = new Path("xxxx");
dir.rmdir();

Path中,自动处理了目录非空的情况下,先递归删除所有子文件夹和子文件的操作.

在pathlib中,我们处理了这些文件管理的细枝末节,让您在开发中更加关注与业务逻辑,事半功倍!

pathlib简介

pathlib提供一套简洁的,面向对象的api调用来操作文件.

仓库地址: pathlib

创建方式

// 从字符串创建
const path = Path('folder/file.txt');

// 从多个部分创建
const path2 = Path('folder', 'file.txt');

// 用join运算符连接
const path3 = Path('folder').join('file.txt');


//使用静态方法创建目录对象的时候,需要先初始化Path类,一般在Ability/onWindowStageCreate中初始化

const context = getContext();
Path.initClass(context);

// 从cache目录创建 data/storage/el2/base/haps/demo/cache
const cache = Path.cache()

// 从temp目录创建 data/storage/el2/base/haps/demo/temp
const temp = Path.temp()

// 从files目录创建 data/storage/el2/base/haps/demo/files
const files = Path.files()

常用对象和方法:

通用方法

exists() 判断路径对象是否存在

文件夹操作

subPaths() 获取所有的子路径对象

rmdir() 删除文件夹递归删除所有子文件和子文件夹

文件操作

touch() 创建文件

unlink() 删除文件

rename() 重命名文件

静态方法

files() 获取沙箱files目录

temp() 获取沙箱temp目录

cache() 获取沙箱cache目录

pathlib的优势:

  1. 面向对象的API,更符合使用习惯

  2. 自动处理不同系统的路径差异

  3. 提供丰富的路径操作方法

  4. 代码更简洁易读

建议:

  1. 新项目优先使用pathlib

  2. 路径处理统一使用Path对象

  3. 注意正确处理异常情况

  4. 考虑文件编码问题

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
1条回复
按时间正序
/
按时间倒序
鸿蒙活动小助手
鸿蒙活动小助手

欢迎新人~如想要进交流群,请联系我哦~

回复
2025-7-8 11:02:40
回复
    相关推荐