声明
一下方法均是异步方法,同时也存在对应的同步方法。比如:access和accessSync
常用方法
fs.access(path[, mode], callback)
测试用户对 path 指定的文件或目录的权限。 mode 参数是可选的整数,指定要执行的可访问性检查。
F_OK:文件是否存在
R_OK:是否可读
W_OK:是否可写
X_OK:是否可执行
callback 是回调函数,其使用一个可能的错误参数调用
const { F_OK, R_OK } = require('constants')
const fs = require('fs')
let path = '../image/a.jpg'
//文件是否存在
fs.access(path, F_OK, (err) => {
if (err) {
console.log("该文件不存在")
} else {
console.log("该文件存在")
}
})
//文件是否可读
fs.access(path, R_OK, (err) => {
if (err) {
console.log("该文件不可读")
} else {
console.log("该文件可读")
}
})
注:
- 使用文件常量时要么引入,要么constants.F_OK
- 在调用 fs.open()、fs.readFile() 或 fs.writeFile() 之前,不要使用 fs.access() 检查文件的可访问性。 这样做会引入竞争条件,因为其他进程可能会在两次调用之间更改文件的状态。 而是,用户代码应直接打开/读取/写入文件,并处理无法访问文件时引发的错误。
fs.appendFile(path, data[, options], callback)
异步地将数据追加到文件,如果该文件尚不存在,则创建该文件。 data 可以是字符串或 <Buffer>。
实例:指定编码,追加字符串
const fs = require('fs')
fs.appendFile('./a.txt', '我是要追加的内容', 'utf-8', (err) => {
if (err) {
console.log("追加失败!")
return
}
console.log("追加成功")
})
fs.chmod(path, mode, callback)
修改文件权限
path:文件路径
mode:文件权限,8进制,或8进制对应的数值。
callback(err):回调
fs.copyFile(src, dest[, mode], callback)
异步地将 src 复制到 dest。 默认情况下,如果 dest 已经存在,则会被覆盖。
src:源文件路径
desc:复制操作的目标文件名
fs.cp(src, dest[, options], callback)
将整个目录结构从 src 异步地复制到 dest,包括子目录和文件。
fs.createReadStream(path[, options])
以流的形式读取文件,可以从文件中读取一定范围的字节,而不是整个文件。配置项参数略
fs.createWriteStream(path[, options])
以流的形式写文件
fs.exists(path, callback)
判断文件是否存在,已弃用推荐fs.stat() 或 fs.access()
不推荐在调用 fs.open()、fs.readFile() 或 fs.writeFile() 之前使用 fs.exists() 检查文件是否存在。 这样做会引入竞争条件,因为其他进程可能会在两次调用之间更改文件的状态
fs.fchmod(fd, mode, callback)
设置文件权限
fs.mkdir(path[, options], callback)
异步的创建目录
const fs = require('fs')
fs.mkdir('./新建文件夹', err => {
if (err) {
console.log("文件夹创建失败")
} else {
console.log("文件夹创建成功")
}
})
fs.mkdtemp(prefix[, options], callback)
创建唯一的临时目录。
fs.open(path[, flags[, mode]], callback)
默认以只读的方式打开文件
fs.opendir(path[, options], callback)
打开目录
fs.readdir(path[, options], callback)
读取目录的内容。 回调有两个参数 (err, files),其中 files 是目录中文件名的数组,不包括 ‘.’ 和 ‘…’。
const fs = require('fs')
fs.readdir('./', (err, file) => {
if (err) {
console.log("读取失败")
} else {
console.log(file)
}
})
fs.readFile(path[, options], callback)
读取文件,对于字符串文件一般要指定编码(不指定会返回原始缓冲区)。对于图片、音频等流文件不需要指定编码
const fs = require('fs')
fs.readFile('./a.txt', 'utf-8', (err, data) => {
if (err) {
console.log("文件读取失败")
} else {
console.log("文件内容是:", data)
}
})
fs.writeFile(file, data[, options], callback)
文件写入,字符串文件一般需要设置编码,默认编码。如果写入的是流文件,编码不生效
fs.rename(oldPath, newPath, callback)
文件重命名
fs.rm(path[, options], callback)
删除文件和目录
fs.stat(path[, options], callback)
获取文件属性