node(5):文件系统

声明

一下方法均是异步方法,同时也存在对应的同步方法。比如: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)

获取文件属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值