Node.js fs模块(三)目录操作
Node.js fs模块(二)_qfc_128220的博客-CSDN博客
前面已经介绍了fs模块进行文件读写的基本操作,接下来我们会学习fs模块进行文件夹的操作,如创建文件夹,删除文件夹,删除指定文件,读取文件夹内容,获取文件夹及文件信息,判断文件夹或文件是否有操作权限。
目录
fs.mkdir(path, options, callback)
fs.rmdir(path, options, callback)
fs.readdir(path, options, callback)
fs.access(path, mode, callback)
fs.mkdir(path, options, callback)
创建目录
形参解析
path:传入将要被创建的文件夹路径
options.recursive:表示是否创建父目录
callback(err, path):err是创建文件夹过程产生的错误信息,path是创建的第一个目录路径
创建目录,我们需要注意几个问题:
1、目录已存在,重复创建会发生什么
重复创建目录不会发生报错,只是fs.mkdir的回调函数path参数会返回undefined
2、创建的目录是多级的,该如何处理
创建多级目录,需要设置options.recursive为true,才能将多级目录都创建成功,并且fs.mkdir的回调函数形参path是第一级目录的所在路径
如果options.recursive为false,则无法创建多级目录,只支持单个目录创建
fs.rmdir(path, options, callback)
删除目录
形参分析
path:要删除的目录所在路径
callback:删除完成后的回调
注意这里删除的是 a/b ,即最终删除的是b目录,而a目录不受影响
需要注意的是fs.rmdir不支持递归删除多级目录,比如上面想删除a目录,但是a目录下还有一个b目录,所以fs.rmdir删除失败。
我们需要知道递归删除多级目录是一种非常危险的动作。毕竟rm -rf删库跑路不是浪得虚名的。我们应该谨慎使用递归删除目录,Node.js 很贴心,fs.rmdir直接从源头帮我们杜绝了。
fs.unlink(path, callback)
删除文件
和fs.rmdir区别是,fs.unlink适用于删除文件,而fs.rmdir适用于删除目录
fs.readdir(path, options, callback)
读取目录的内容
形参分析
path:要读取的目录
options.encoding:读取的目录内容的编码格式,如字符串文件名的编码
callback(err, files):err错误优先,files即读取目录下的所有文件名,目录名
可以发现fs.readdir只能读取单级目录下的文件和文件夹名字,而无法递归读取到所有
另外关于options.encoding是用于控制callback(files)中文件名和目录名
如果改成options.encoding改成buffer,就会输出buffer格式的文件名和目录名
fs.access(path, mode, callback)
测试用户对 path
指定的文件或目录的权限
其中 mode 是当前用户对该文件的权限,这里权限可以取值fs.constants
[Object: null prototype] {
UV_FS_SYMLINK_DIR: 1,
UV_FS_SYMLINK_JUNCTION: 2,
O_RDONLY: 0,
O_WRONLY: 1,
O_RDWR: 2,
UV_DIRENT_UNKNOWN: 0,
UV_DIRENT_FILE: 1,
UV_DIRENT_DIR: 2,
UV_DIRENT_LINK: 3,
UV_DIRENT_FIFO: 4,
UV_DIRENT_SOCKET: 5,
UV_DIRENT_CHAR: 6,
UV_DIRENT_BLOCK: 7,
S_IFMT: 61440,
S_IFREG: 32768,
S_IFDIR: 16384,
S_IFCHR: 8192,
S_IFLNK: 40960,
O_CREAT: 256,
O_EXCL: 1024,
UV_FS_O_FILEMAP: 536870912,
O_TRUNC: 512,
O_APPEND: 8,
F_OK: 0,
R_OK: 4,
W_OK: 2,
X_OK: 1,
UV_FS_COPYFILE_EXCL: 1,
COPYFILE_EXCL: 1,
UV_FS_COPYFILE_FICLONE: 2,
COPYFILE_FICLONE: 2,
UV_FS_COPYFILE_FICLONE_FORCE: 4,
COPYFILE_FICLONE_FORCE: 4
}
较为常见的有:
F_OK 文件存在
R_OK 文件可读
W_OK 文件可写
X_OK 文件可执行
fs.access还有一点需要注意,fs.acess不要和fs.open一起使用,二者一起使用会产生竞争关系。
相关文章
- [Web 前端] 使用yarn代替npm作为node.js的模块管理器
- Node.js究竟是什么?
- JS框架_(JQuery.js)动画效果鼠标跟随
- JS框架_(JQuery.js)夜晚天空满天星星闪烁动画
- 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
- Node.js进程管理之Process模块
- Node.js事件驱动模型
- Node.js之HTPP URL
- 10.Node.js核心模块
- [Node.js] Scraping Dynamic JavaScript Websites with Nightmare
- [Node.js] Using npm link to use node modules that are "in progress"
- [MEAN Stack] First API -- 1. with Node.js, Express and MongoDB
- Node.js模块 require和 exports
- Node.js模块
- Node.js 和 C++ 之间的类型转换
- [Node.js] Handle Relative Paths in a Node.js ESM Project with import.meta.url
- [Whole Web, Nods.js, PM2] Passing environment variables to node.js using pm2
- [Whole Web, Node.js, PM2] Restarting your node.js app on code change using pm2
- Node.js模块 require和 exports
- node.js中的事件循环机制
- Node.js 命令行程序开发教程
- alinode-基于Node.js运行时的应用性能管理解决方案
- Atitit 前端测试最简化内嵌web服务器 php 与node.js 目录 1.1. php内置Web Server1 1.2. Node的2 Node的比较麻烦些。。Php更加简单
- 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
- node.js JS对象和JSON字符串之间的转换
- linux下安装node.js
- Node.js http模块