@mptool/file
文件 API
提示
请注意,框架会自动帮你添加 USER_DATA_PATH 作为前缀,因此你无需关注它。
工具类
dirname(path: string): string返回路径的文件夹部分
exists(path: string): boolean返回布尔值,代表文件或文件夹是否存在
isDir(path: string): boolean返回布尔值,代表路径是否是文件夹
isFile(path: string): boolean返回布尔值,代表路径是否是文件
读取类
ls(path: string): string[]以数组形式列出目录下所有内容
readFile(path: string, encoding?: string): string | ArrayBuffer | undefined读取指定路径的文件内容并返回。当文件不存在时,返回
undefined。encoding为文件的编码格式,可选,当文件为文本文件时默认"utf-8",为二进制文件时默认为'buffer'readJSON(path: string, encoding = 'utf-8'): any | undefined读取可序列化文件数据并返回解析结果。
当 JSON 文件不存在或解析失败时,返回
undefinedpath: 读取的文件路径,不应含有.json后缀encoding: 文件的编码格式,可选,默认utf-8
操作类
mkdir(path: string, recursive = false): void创建目录。第二个参数
recursive可选,代表是否递归父目录。rm(path: string, type?: "dir" | "file"): void删除指定路径。
第二个参数
type是可选的,可填入"dir"或"file",填入可提升删除性能writeFile(path: string, data: any, encoding?: string): void写入文件
path: 待写入的文件路径,若文件或其父文件夹不存在会自动创建data: 待写入的数据,可接受任意可序列化的数据或 Bufferencoding: 文件编码选项,可选,默认utf-8(数据) 或binary(Buffer)
writeJSON(path: string, data: any, encoding = 'utf-8'): void写入可序列化数据为 JSON
path: 写入文件的路径,若父文件夹不存在会自动创建data: 写入文件的数据,可接受任意可序列化的数据encoding: 文件编码选项,默认utf-8
saveFile(tempFilePath: string, path: string): void将缓存文件保存到本地文件存储。
tempFilePath: 缓存文件路径path: 保存文件路径
saveOnlineFile(onlinePath: string, localPath: string): Promise<void>将在线文件保存到本地指定位置
onlinePath: 在线文件路径localPath: 本地文件路径
提示
保存目录会自动创建。
unzip(zipFilePath: string, targetPath: string): Promise<void>解压文件
zipFilePath: 待解压的压缩文件路径targetPath: 解压到的目录
提示
解压目录会自动创建。
存储 API
存取
put 和 take 可以存入任何数据,但存入的数据只能取出一次,且仅在当次小程序启动中有效。
提示
为了保证性能,以及由于小程序对 Function 进行了特殊处理,我们不会对存入的数据进行深拷贝。
put<T = unknown>(key: string, data: T): void: 存数据。take<T = unknown>(key: string): T | undefined: 取数据提示
当数据已经被取过一次后,后续返回
undefined。
可持久化数据
get 和 set 设置的数据可持久化,且可以设置过期时间。
注意
请注意由于微信小程序底层上的问题,自动清除只发生在下一次读取并发现已经失效时,如果你没有后续读取对应的存储,它们会一直保存 (即使已经过期)。
所以如果你使用了大量临时的键值去存入数据,你可能需要定期通过 check 手动检查并清除过期数据。
set(key: string, value: any, expire?: number | 'once' | 'keep' = 'once'): void同步设置数据。
key: 设置的键名value: 存入的值expire: 过期时间,可选,默认为'once''once': 默认,表示仅本次启动有效'keep': 表示保持上一次有效时间- 数字: 已毫秒为单位的有效时间
- 0: 永久有效
提示
请注意,如果传入
'keep'时,存储中不存在同名键值,则该值也不会被写入。setAsync(key: string, value: any, expire?: number | 'once' | 'keep' = 'once'): Promise<void>set的异步版本,在设置大量数据时可考虑使用,返回一个 Promise。get<T = unknown>(key: string): T | undefined同步读取数据并返回。
当数据已经过期时,返回
undefined。key: 设置的键名
getAsync<T = unknown>(key: string): Promise<T | undefined>get的异步版本,在读取大量数据避免阻塞线程时可考虑使用,返回一个 Promise。key: 设置的键名
remove(key: string): void同步删除数据。
key: 删除的键名
removeAsync(key: string): Promise<void>异步删除数据,返回一个 Promise。
key: 删除的键名
check(): void同步检查并清理过期数据。
checkAsync(): Promise<void>异步检查并清理过期数据,返回一个 Promise。