PromisesAPI
2024年10月14日
一、fsPromises.access(path[, mode])
1.1 认识
access(path[, mode]) 测试用户对 path 指定的文件或目录的权限。 mode 参数是可选的整数,指定要执行的可访问性检查。
使用规范
不建议在调用 open()、readFile()、writeFile() 之前使用 access() 检查文件的可访问性。 这样做会引入竞争条件,因为其他进程可能会在两次调用之间更改文件的状态。 而是,用户代码应直接打开/读取/写入文件,并处理无法访问文件时引发的错误。
1.2 语法
await access(path:string|buffer|url,mode:number)
-
path: string|buffer|url
-
mode: number 默认值: fs.constants.F_OK 。mode 应该是值
fs.constants.F_OK
或由fs.constants.R_OK
、fs.constants.W_OK
和fs.constants. X_OK
中的任何一个- fs.constants.F_OK: 是否存在
- fs.constants.R_OK: 是否可读
- fs.constants.W_OK: 是否可写
- fs.constants.X_OK: 是否可读可写
1.3 场景
const Fs = require("fs");
async function access() {
let filehandle = null;
try {
await Fs.promises.access("./test.js",Fs.constants.F_OK);
} catch (error) {
console.log(error);
} finally {
await filehandle?.close();
}
}
access();
二、fsPromises.appendFile(path, data[, options])
2.1 认识
appendFile() 用于在现有文件中异步追加新数据,或者如果该文件不存在,则首先创建该文件,然后将给定数据追加到该文件中。
使用规范
不建议在调用 open() 之前使用 access() 检查文件的可访问性。 这样做会引入竞争条件,因为其他进程可能会在两次调用之间更改文件的状态。 而是,用户代码应直接打开/读取/写入文件,并处理无法访问文件时引发的错误。
2.2 语法
await fs.promises.appendFile(path:string|buffer|url|fileHandle,data:string|buffer,{
encoding: string|null,
mode: number,
flag: string
});
- path: string|buffer|url|fileHandle
- data: string|buffer
- encoding: string|null 默认值: 'utf8'
- mode: number 默认值: 0o666
- flag: string 默认值: 'a'。
- a: 打开文件进行追加。 如果文件不存在,则创建该文件。
- ax: 类似于 'a' 但如果路径存在则失败。
- a+: 打开文件进行读取和追加。 如果文件不存在,则创建该文件。
- ax+: 类似于 'a+' 但如果路径存在则失败。
- as: 以同步模式打开文件进行追加。 如果文件不存在,则创建该文件。
- as+: 以同步模式打开文件进行读取和追加。 如果文件不存在,则创建该文件。
- r: 打开文件进行读取。 如果文件不存在,则会发生异常。
- r+: 打开文件进行读写。 如果文件不存在,则会发生异常。
- rs+: 以同步模式打开文件进行读写。 指示操作系统绕过本地文件系统缓存。
- w: 打开文件进行写入。 创建(如果它不存在)或截断(如果它存在)该文件。
- wx: 类似于 'w' 但如果路径存在则失败。
- w+: 打开文件进行读写。 创建(如果它不存在)或截断(如果它存在)该文件。
- wx+: 类似于 'w+' 但如果路径存在则失败。
返回值
undefined
2.3 场景
const Fs = require("fs");
async function appendFile() {
let filehandle = null;
try {
await Fs.promises.appendFile("./test.js","哈哈哈哈哈",{
encoding:"utf8"
});
} catch (error) {
console.log(error);
} finally {
await filehandle?.close();
}
}
appendFile();
FileHandle 类方式
chmod(mode)
chmod 更改文件的权限。
同步方式
语法
fs.chmodSync(path,mode);
- path: string|buffer|url
- mode: string|number
- fs.constants.S_IRUSR: 0o400 所有者可读取
- fs.constants.S_IWUSR: 0o200 所有者可写入
- fs.constants.S_IXUSR: 0o100 所有者可执行/搜索
- fs.constants.S_IRGRP: 0o40 群组可读取
- fs.constants.S_IWGRP: 0o20 群组可写入
- fs.constants.S_IXGRP: 0o10 群组可执行/搜索
- fs.constants.S_IROTH: 0o4 其他人可读取
- fs.constants.S_IWOTH: 0o2 其他人可写入
- fs.constants.S_IXOTH: 0o1 其他人可执行/搜索
- 0oA(左边八进制: 表示文件所有者的权限)B(中间八进制: 表示群 组的权限)C(右边八进制: 指定其他人的权限),八进制数字含义如下:
- 7: 可读、可写和可执行
- 6: 可读和可写
- 5: 可读和可执行
- 4: 只读
- 3: 可写和可执行
- 2: 只写
- 1: 只可执行
- 0: 无权限
- 0o765: 所有者可以读取、写入、以及执行文件。群组可以读取和写入文件。其他人可以读取和执行文件。
场景
回调方式
语法
Fs.chmod(path,mode,(error)=>{
console.log(error);
})
- path: string|buffer|url
- mode: string|number
- fs.constants.S_IRUSR: 0o400 所有者可读取
- fs.constants.S_IWUSR: 0o200 所有者可写入
- fs.constants.S_IXUSR: 0o100 所有者可执行/搜索
- fs.constants.S_IRGRP: 0o40 群组可读取
- fs.constants.S_IWGRP: 0o20 群组可写入
- fs.constants.S_IXGRP: 0o10 群组可执行/搜索
- fs.constants.S_IROTH: 0o4 其他人可读取
- fs.constants.S_IWOTH: 0o2 其他人可写入
- fs.constants.S_IXOTH: 0o1 其他人可执行/搜索
- 0oA(左边八进制: 表示文件所有者的权限)B(中间八进制: 表示群组的权限)C(右边八进制: 指定其他人的权限),八进制数字含义如下:
- 7: 可读、可写和可执行
- 6: 可读和可写
- 5: 可读和可执行
- 4: 只读
- 3: 可写和可执行
- 2: 只写
- 1: 只可执行
- 0: 无权限
- 0o765: 所有者可以读取、写入、以及执行文件。群组可以读取和写入文件。其他人可以读取和执行文件。
- callback: function
场景
const Fs = require("fs");
Fs.chmod("./test",0o775,(error)=>{
if(error){
console.log(error)
}
})
Promise 方式
语法
await fs.promises.chmod(path,mode);
- path: string|buffer|url
- mode: string|number
- fs.constants.S_IRUSR: 0o400 所有者可读取
- fs.constants.S_IWUSR: 0o200 所有者可写入
- fs.constants.S_IXUSR: 0o100 所有者可执行/搜索
- fs.constants.S_IRGRP: 0o40 群组可读取
- fs.constants.S_IWGRP: 0o20 群组可写 入
- fs.constants.S_IXGRP: 0o10 群组可执行/搜索
- fs.constants.S_IROTH: 0o4 其他人可读取
- fs.constants.S_IWOTH: 0o2 其他人可写入
- fs.constants.S_IXOTH: 0o1 其他人可执行/搜索
- 0oA(左边八进制: 表示文件所有者的权限)B(中间八进制: 表示群组的权限)C(右边八进制: 指定其他人的权限),八进制数字含义如下:
- 7: 可读、可写和可执行
- 6: 可读和可写
- 5: 可读和可执行
- 4: 只读
- 3: 可写和可执行
- 2: 只写
- 1: 只可执行
- 0: 无权限
- 0o765: 所有者可以读取、写入、以及执行文件。群组可以读取和写入文件。其他人可以读取和执行文件。
FileHandle 类方式
语法
await fileHandle.chmod(mode)
-
mode: string|number
- fs.constants.S_IRUSR: 0o400 所有者可读取
- fs.constants.S_IWUSR: 0o200 所有者可写入
- fs.constants.S_IXUSR: 0o100 所有者可执行/搜索
- fs.constants.S_IRGRP: 0o40 群组可读取
- fs.constants.S_IWGRP: 0o20 群组可写入
- fs.constants.S_IXGRP: 0o10 群组可执行/搜索
- fs.constants.S_IROTH: 0o4 其他人可读取
- fs.constants.S_IWOTH: 0o2 其他人可写入
- fs.constants.S_IXOTH: 0o1 其他人可执行/搜索
- 0oA(左边八进制: 表示文件所有者的权限)B(中间八进制: 表示群组的权限)C(右边八进制: 指定其他人的权限),八进制数字含义如下:
- 7: 可读、可写和可执行
- 6: 可读和可写
- 5: 可读和可执行
- 4: 只读
- 3: 可写和可执行
- 2: 只写
- 1: 只可执行
- 0: 无权限
- 0o765: 所有者可以读取、写入、以及执行文件。群组可以读取和写入文件。其他人可以读取和执行文件。
chown(path,uid,gid)
chown(path,uid,gid) 更改文件的所有权。
同步方式
语法
fs.chownSync(path,uid,gid);
- path: string|buffer|url
- uid: number
- gid: number
回调方式
语法
fs.chown(path,uid,gid,(error)=>{
if(error){
console.log(error)
}
})
- path: string|buffer|url
- uid: number
- gid: number
- callback: function
场景
Promise 方式
语法
await fs.promises.chown(path:string|buffer|url,uid:number,gid:number);
- path: string|buffer|url
- uid: number
- gid: number
返回值
undefined
FileHandle 类方式
语法
await fileHandle.chown(uid:number,gid:number);
- uid: number
- gid: number
返回值
undefined
close()
close() 等待句柄上的任何未决操作完成后,关闭文件句柄。