From 532476abbc0ebbc872d1d62eb2c901d3e3f581fd Mon Sep 17 00:00:00 2001 From: 18721213663 Date: Thu, 2 Feb 2023 21:23:50 +0800 Subject: [PATCH] fs_add_movefile&listfile&filelock Signed-off-by: 18721213663 --- .../reference/apis/js-apis-file-fs.md | 346 ++++++++++++++++++ .../reference/apis/js-apis-fileio.md | 17 - 2 files changed, 346 insertions(+), 17 deletions(-) diff --git a/zh-cn/application-dev/reference/apis/js-apis-file-fs.md b/zh-cn/application-dev/reference/apis/js-apis-file-fs.md index a0271c5500..681f8f1314 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-file-fs.md +++ b/zh-cn/application-dev/reference/apis/js-apis-file-fs.md @@ -1559,6 +1559,239 @@ symlinkSync(target: string, srcPath: string): void fs.symlinkSync(srcFile, dstFile); ``` +## fs.listFile +listFile(path: string, options?: { + recursion?: boolean; + listNum?: number; + filter?: Filter; +}): Promise; + +列出文件夹下所有文件名,支持递归列出所有文件名(包含子目录下),支持文件过滤,使用Promise异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | path | string | 是 | 文件夹的应用沙箱路径。 | + | options | Object | 否 | 文件过滤选项。 | + +**options参数说明:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | recursion | boolean | 否 | 是否递归子目录下文件名,默认为false。 | + | listNum | number | 否 | 列出文件名数量。当设置0时,列出所有文件,默认为0。 | + | filter | [Filter](#filter) | 否 | 文件过滤选项。当前仅支持后缀名匹配、文件名模糊查询、文件大小过滤、最近修改时间过滤。 | + +**返回值:** + + | 类型 | 说明 | + | --------------------- | ---------- | + | Promise<string[]> | Promise对象。返回文件名数组。 | + +**示例:** + + ```js + let options = { + "recursion": false, + "listNum": 0, + "filter": { + "suffix": [".png", ".jpg", ".jpeg"], + "displayName": ["%abc", "efg%"], + "fileSizeOver": 1024, + "lastModifiedAfter": new Date().getTime(), + } + }; + fs.listFile(pathDir, options).then((filenames) => { + console.info("listFile succeed"); + for (let i = 0; i < filenames.size; i++) { + console.info("fileName: %s", filenames[i]); + } + }).catch((err) => { + console.info("list file failed with error message: " + err.message + ", error code: " + err.code); + }); + ``` + +## fs.listFile +listFile(path: string, options?: { + recursion?: boolean; + listNum?: number; + filter?: Filter; +}, callback: AsyncCallback): void; + +列出文件夹下所有文件名,支持递归列出所有文件名(包含子目录下),支持文件过滤,使用Callback异步回调。 + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | path | string | 是 | 文件夹的应用沙箱路径。 | + | options | Object | 否 | 文件过滤选项。 | + | callback | AsyncCallback<string[]> | 是 | 异步列出文件名数组之后的回调。 | + +**options参数说明:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | recursion | boolean | 否 | 是否递归子目录下文件名,默认为false。 | + | listNum | number | 否 | 列出文件名数量。当设置0时,列出所有文件,默认为0。 | + | filter | [Filter](#filter) | 否 | 文件过滤选项。当前仅支持后缀名匹配、文件名模糊查询、文件大小过滤、最近修改时间过滤。 | + +**示例:** + + ```js + let options = { + "recursion": false, + "listNum": 0, + "filter": { + "suffix": [".png", ".jpg", ".jpeg"], + "displayName": ["%abc", "efg%"], + "fileSizeOver": 1024, + "lastModifiedAfter": new Date().getTime(), + } + }; + fs.listFile(pathDir, options, (err, filenames) => { + if (err) { + console.info("list file failed with error message: " + err.message + ", error code: " + err.code); + } else { + console.info("listFile succeed"); + for (let i = 0; i < filenames.size; i++) { + console.info("filename: %s", filenames[i]); + } + } + }); + ``` + +## listFileSync + +listFileSync(path: string, options?: { + recursion?: boolean; + listNum?: number; + filter?: Filter; +}): string[]; + +以同步方式列出文件夹下所有文件名,支持递归列出所有文件名(包含子目录下),支持文件过滤。 + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | path | string | 是 | 文件夹的应用沙箱路径。 | + | options | Object | 否 | 文件过滤选项。 | + +**options参数说明:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | recursion | boolean | 否 | 是否递归子目录下文件名,默认为false。 | + | listNum | number | 否 | 列出文件名数量。当设置0时,列出所有文件,默认为0。 | + | filter | [Filter](#filter) | 否 | 文件过滤选项。当前仅支持后缀名匹配、文件名模糊查询、文件大小过滤、最近修改时间过滤。 | + +**返回值:** + + | 类型 | 说明 | + | --------------------- | ---------- | + | string[] | 返回文件名数组。 | + +**示例:** + + ```js + let options = { + "recursion": false, + "listNum": 0, + "filter": { + "suffix": [".png", ".jpg", ".jpeg"], + "displayName": ["%abc", "efg%"], + "fileSizeOver": 1024, + "lastModifiedAfter": new Date().getTime(), + } + }; + let filenames = fs.listFileSync(pathDir, options); + console.info("listFile succeed"); + for (let i = 0; i < filenames.size; i++) { + console.info("filename: %s", filenames[i]); + } + ``` +## moveFile + +moveFile(src: string, dest: string, mode?: number): Promise; + +移动文件,使用Promise异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | src | string | 是 | 源文件的应用沙箱路径。 | + | dest | string | 是 | 目的文件的应用沙箱路径。 | + | mode | number | 否 | 移动模式。若mode为0,移动位置存在同名文件时,强制移动覆盖。若mode为1,移动位置存在同名文件时,抛出异常。默认为0。 | + +**示例:** + + ```js + fs.moveFile(srcPath, destPath, 0).then(() => { + console.info("move file succeed"); + }).catch((err) => { + console.info("move file failed with error message: " + err.message + ", error code: " + err.code); + }); + ``` + +## moveFile + +moveFile(src: string, dest: string, mode?: number, callback: AsyncCallback): void; + +移动文件,使用Callback异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | src | string | 是 | 源文件的应用沙箱路径。 | + | dest | string | 是 | 目的文件的应用沙箱路径。 | + | mode | number | 否 | 移动模式。若mode为0,移动位置存在同名文件时,强制移动覆盖。若mode为1,移动位置存在同名文件时,抛出异常。默认为0。 | + | callback | AsyncCallback<void> | 是 | 异步移动文件之后的回调。 | + +**示例:** + + ```js + fs.moveFile(srcPath, destPath, 0, (err) => { + if (err) { + console.info("move file failed with error message: " + err.message + ", error code: " + err.code); + } else { + console.info("move file succeed"); + } + }); + ``` + +## moveFileSync + +moveFile(src: string, dest: string, mode?: number): void; + +以同步方式移动文件。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------ | ------ | ---- | --------------------------- | + | src | string | 是 | 源文件的应用沙箱路径。 | + | dest | string | 是 | 目的文件的应用沙箱路径。 | + | mode | number | 否 | 移动模式。若mode为0,移动位置存在同名文件时,强制移动覆盖。若mode为1,移动位置存在同名文件时,抛出异常。默认为0。 | + +**示例:** + + ```js + fs.moveFileSync(srcPath, destPath, 0); + console.info("move file succeed"); + ``` + ## fs.mkdtemp mkdtemp(prefix: string): Promise<string> @@ -2353,6 +2586,104 @@ readSync(buffer: ArrayBuffer, options?: { offset?: number; length?: number; }): | ---- | ------ | ---- | ---- | ------- | | fd | number | 是 | 否 | 打开的文件描述符。 | +### lock + +lock(exclusive?: boolean): Promise; + +文件阻塞式施加共享锁或独占锁,使用Promise异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | ----------- | ---- | ---------------------------------------- | + | exclusive | boolean | 否 | 是否施加独占锁,默认false。 | + +**返回值:** + + | 类型 | 说明 | + | ---------------------------------- | ------ | + | Promise<void> | Promise对象。无返回值。 | + +**示例:** + + ```js + let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); + file.lock(true).then(() => { + console.log("lock file successful"); + }).catch((err) => { + console.info("lock file failed with error message: " + err.message + ", error code: " + err.code); + }); + ``` + +### lock + +lock(exclusive?: boolean, callback: AsyncCallback): void; + +文件阻塞式施加共享锁或独占锁,使Callback异步回调。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | ----------- | ---- | ---------------------------------------- | + | exclusive | boolean | 否 | 是否施加独占锁,默认false。 | + | callback | AsyncCallback<void> | 是 | 异步文件上锁之后的回调。 | + +**示例:** + + ```js + let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); + file.lock(true, (err) => { + if (err) { + console.info("lock file failed with error message: " + err.message + ", error code: " + err.code); + } else { + console.log("lock file successful"); + } + }); + ``` + +### tryLock + +tryLock(exclusive?: boolean): void; + +文件非阻塞式施加共享锁或独占锁。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**参数:** + + | 参数名 | 类型 | 必填 | 说明 | + | ------- | ----------- | ---- | ---------------------------------------- | + | exclusive | boolean | 否 | 是否施加独占锁,默认false。 | + +**示例:** + + ```js + let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); + file.tryLock(true); + console.log("lock file successful"); + ``` + +### unlock + +unlock(): void; + +以同步方式给文件解锁。 + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +**示例:** + + ```js + let file = fs.openSync(path, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE); + file.tryLock(true); + file.unlock(); + console.log("unlock file successful"); + ``` + ## OpenMode open接口flags参数常量。文件打开标签。 @@ -2371,3 +2702,18 @@ open接口flags参数常量。文件打开标签。 | DIR | number | 0o200000 | 如果path不指向目录,则出错。 | | NOFOLLOW | number | 0o400000 | 如果path指向符号链接,则出错。 | | SYNC | number | 0o4010000 | 以同步IO的方式打开文件。 | + +## Filter + +**系统能力**:SystemCapability.FileManagement.File.FileIO + +文件过滤配置项类型,支持listFile接口使用。 + +| 名称 | 类型 | 说明 | +| ----------- | --------------- | ------------------ | +| suffix | Array<string> | 文件后缀名完全匹配,各个关键词OR关系。 | +| displayName | Array<string> | 文件名模糊匹配,各个关键词OR关系。 | +| mimeType | Array<string> | mime类型完全匹配,各个关键词OR关系。 | +| fileSizeOver | number | 文件大小匹配,大于等于指定大小的文件。 | +| lastModifiedAfter | number | 文件最近修改时间匹配,在指定时间点及之后的文件。 | +| excludeMedia | boolean | 是否排除Media中已有的文件。 | diff --git a/zh-cn/application-dev/reference/apis/js-apis-fileio.md b/zh-cn/application-dev/reference/apis/js-apis-fileio.md index 4990dc8f99..e7f8bafc34 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-fileio.md +++ b/zh-cn/application-dev/reference/apis/js-apis-fileio.md @@ -3436,20 +3436,3 @@ isSymbolicLink(): boolean let dir = fileio.opendirSync(pathDir); let isSymbolicLink = dir.readSync().isSymbolicLink(); ``` - -## Filter9+ - -**系统接口**:此接口为系统接口。 - -**系统能力**:SystemCapability.FileManagement.File.FileIO - -文件过滤器配置项。 - -| 名称 | 类型 | 说明 | -| ----------- | --------------- | ------------------ | -| suffix | Array<string> | 文件后缀名,各个关键词OR关系。 | -| displayName | Array<string> | 文件名模糊匹配,各个关键词OR关系。 | -| mimeType | Array<string> | mime类型匹配,各个关键词OR关系。 | -| fileSizeOver | number | 文件大小匹配,大于等于指定大小的文件。 | -| lastModifiedAfter | Date | 修改时间匹配,在指定时间点后的文件。 | -| excludeMedia | Boolean | 是否排除Media中已有的文件。 | -- GitLab