node.JS的文件模块方法整理(最清晰版!!)

Node.js文件系统
Node.js 提供一组类似标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:
var fs = require(“fs”)
fs文件API整理说明
前言:
我们知道,node的fs模块主要是用来操作文件的。
node存在于内存中,文件存在于硬盘中,如果想实现node对文件的操作,就需要借助fs模块,即引入:var fs = require(“fs”),进而操作硬盘。接下来对文件进行操作,首先要打开文件,即使用
fs.open(path,mode,(err,fd)=>{ //参数fd为文件的描述符 })

接下来就是注意点啦!!
fs的的方法,有些是直接作用于文件的,有些事作用于文件描述符的,能分清这些,就能更好的利用好文件模块的API啦!!我将这些方法做了总结:

1、fs模块上的方法从作用的对象上分,分为两部分:作用于文件路径的API及作用于文件描述符的API
作用于文件描述符的方法
顾名思义,就是在使用在fs.open()方法的回掉函数中的API
fs.open() 方法用于分配一个新的文件描述符。 一旦分配了,文件描述符可用于读取数据、写入数据、或查看文件信息

fs.open(path,mode,(err,fd)=>{  
	// 将以下方法用在这里哟  
})

//基于文件描述符的API
// 1、fs.open(url,mode,callback) //cb(err,fd) //打开文件
// 2、fs.fstat(fd,cb)//cb(err,stat) //获取文件描述符详细信息
// 3、fs.close(fd.cb)//cb(err)
// 4、fs.ftruncata(fd,len.cb)//文件截取
// 5、fs.fchmod(fd, mode, cb) //cb(err,fd) 修改文件权限
// mode是由三个数字组成的数字, 第一个代表文件所有者的权限, 第二个数字代表组的权限,第三个数字代表其他人的权限
// 6、 fs.read(fd, buffer, offset, length, position, callback) //从 fd 指定的文件中读取数据
// Buffer.alloc(len)//创建一个一定长度的空字数据块
// Buffer.from(str,type)//创建一个有内容的空数据块
// 7、fs.write(fd, buffer[, offset[, length[, position]]], callback)//向文件中写入buffer数据
// 8、fs.write(fd, string[, position[, encoding]], callback)用来直接写入字符串
// 写入 string 到 fd 指定的文件,如果 string 不是一个字符串,则该值将被强制转换为一个字符串

fs.open("./file.txt", “r+”, (err, fd) => {
// 获取fd的长度
// let len = fs.fstatSync(fd).size
//设置buffer的内存,一个有一定长度的空字符串
// let newBuffer = Buffer.alloc(len)
// 设置buffer的内存,创建一个有内存的空字符串

let newBuffer = Buffer.from("天气不错", "utf8")
fs.write(fd, newBuffer, 0, newBuffer.byteLength, 0, (err, bytesRead, buffer) => {
        console.log(buffer.toString("utf8"))
    })
    // fs.read(fd, newBuffer, 0, newBuffer.byteLength, 0, (err, bytesRead, buffer) => {
    //     console.log(buffer)
    //     console.log(buffer.toString("utf8"))
    // })
fs.close(fd, (err) => {
    if (err) {
        console.log(err)
    }
})
})

2、除了作用于文件描述符上的API,剩下的API可以分为:
针对文件的API
针对文件夹的API
文件夹和文件公用的API
基于文件的操作(文件的增删改查)
// 1、 fs.appendFile(path, data, option,cb)//向文件中添加内容
// 2、 fs.readFile(path,option,cb)//读取文件,返回的是Buffer数据流
// 3、fs.copyFile(origin,target,cb)//复制文件
// 4、fs.link(origin,target,cb)//硬映射,能直接复制出一个文件
// 5、fs.truncate(path,len,cb)//截取文件
// 6、fs.unlink(path,cb)//删除文件
// 7、fs.writeFile()
// 8、fs.watchFile(filename[, options], listener)

fs.watchFile('./test/message.txt', (curr, prev) => {
	console.log(curr, prev);
});

// 9、 fs.unwatchFile(filename[, listener]) //停止监视 filename 文件的变化

fs.appendFile("./file.txt", "嘿嘿嘿", (err) => {
if (err) {
    console.log(err)
}
})


fs.readFile("./file.txt", (err, data) => {
    if (err) {
      	 console.log(err)
    }
   	console.log(data)
  })

fs.lstat("./file.txt", (err, stats) => {
          console.log(stats)
})

作用于文件夹的API
(1)创建文件夹
fs.mkdir(path[, mode], callback) 异步地创建目录
(2)创建临时目录(用途类似于mkdir)
fs.mkdtemp(prefix[, options], callback)
(3)读取一个目录的内容。
fs.readdir(path[, options], callback) 回调有两个参数 (err, files),其中 files 是目录中不包括 ‘.’ 和 ‘…’ 的文件名的数组。
返回的是文件夹下所有的文件名组成的字符串数组[" name1",“name2”]
(4)删除空文件夹
fs.rmdir(path, callback)

文件和文件夹共用API

// 1、fs.rename(oldPath,newPath,cb)//更改文件或文件夹的名字
// 2、 fs.stat(path[, options], callback) //获取文件详细信息
回调函数中包含两个参数 (err, stats) ,如果报错则不存在,其中 stats 为 fs.Stats 对象。
// 3、fs.lstat(path,cb)//获取文件的详细信息
// 4、 fs.chmod(path, mode, callback) 异步地改变文件或文件夹的权限
// 5、 fs.access(path[, mode], callback) 测试 path 指定的文件或目录的用户权限。
fs.access(file, fs.constants.F_OK, cb) //检查文件是否存在于当前目录。
fs.access(file, fs.constants.R_OK, cb) //检查文件是否可读。
fs.access(file, fs.constants.W_OK, cb)// 检查文件是否可写。
// 6、 fs.realpath(path[, options], callback)返回一个真实的绝对路径,用途跟process.cwd()类似,注意参数为“utf-8”
获取绝对路径,和path.resolve("./file.txt")作用相同
// 7、 fs.watch(filename[, options][, listener])文件的监听
当recursive参数为true时,可以进行文件夹递归监听

fs.watch("./test", { recursive: true }, (eventType, filename) => {
	  	console.log(filename)
})

fs常量
由 fs.constants 输出
1、 文件访问常量(fs.access())
常量 描述
F_OK 该标志表明文件对于调用进程是可见的。
R_OK 该标志表明文件可被调用进程读取。
W_OK 该标志表明文件可被调用进程写入。
X_OK 该标志表明文件可被调用进程执行。
2、 文件打开常量(fs.open())
常量 描述
O_RDONLY 该标志表明打开一个文件用于只读访问。
O_WRONLY 该标志表明打开一个文件用于只写访问。
O_RDWR 该标志表明打开一个文件用于读写访问。
O_CREAT 该标志表明如果文件不存在则创建一个文件。
O_EXCL 该标志表明如果设置了 O_CREAT 标志且文件已经存在,则打开一个文件应该失败。
O_NOCTTY 该标志表明如果路径是一个终端设备,则打开该路径不应该造成该终端变成进程的控制终端(如果进程还没有终端)。
O_TRUNC 该标志表明如果文件存在且为一个常规文件、且文件被成功打开为写入访问,则它的长度应该被截断至零。
O_APPEND 该标志表明数据会被追加到文件的末尾。
O_DIRECTORY 该标志表明如果路径不是一个目录,则打开应该失败。
O_NOATIME 该标志表明文件系统的读取访问权不再引起相关文件 atime 信息的更新。该标志只在 Linux 操作系统有效。
O_NOFOLLOW 该标志表明如果路径是一个符号链接,则打开应该失败。
O_SYNC 该标志表明文件打开用于同步 I/O。
O_DSYNC 该标志标明文件为同步I/O打开,写入操作会等待数据完整性
O_SYMLINK 该标志表明打开符号链接自身,而不是它指向的资源。
O_DIRECT 当设置它时,会尝试最小化文件 I/O 的缓存效果。
O_NONBLOCK 该标志表明当可能时以非阻塞模式打开文件。
3、 文件类型常量(fs.Stats)
常量 描述
S_IRWXU 该文件模式表明可被所有者读取、写入、执行。
S_IRUSR 该文件模式表明可被所有者读取。
S_IWUSR 该文件模式表明可被所有者写入。
S_IXUSR 该文件模式表明可被所有者执行。
S_IRWXG 该文件模式表明可被群组读取、写入、执行。
S_IRGRP 该文件模式表明可被群组读取。
S_IWGRP 该文件模式表明可被群组写入。
S_IXGRP 该文件模式表明可被群组执行。
S_IRWXO 该文件模式表明可被其他人读取、写入、执行。
S_IROTH 该文件模式表明可被其他人读取。
S_IWOTH 该文件模式表明可被其他人写入。
S_IXOTH 该文件模式表明可被其他人执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值