极简 Node.js 入门 - 3.4 文件夹写入
2024-10-20 15:55:38
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node
fs.Dir & fs.Dirent
fs.Dir 是可迭代的目录流的类,fs.Dirent 是遍历 fs.Dir 获得的目录项,可以是文件或目录中的子目录
fs.Dir
- dir.path:目录的只读路径
- dir.read():不传入 callabck 函数则返回 Promise,读取迭代器下一个目录项,返回一个 Promise,resolve 后得到 fs.Dirent 或 null(如果没有更多的目录项要读取)
- dir.close():不传入 callabck 函数则返回 Promise,关闭目录的底层资源句柄
fs.Dirent
- dirent.name
- dirent.isDirectory()
- dirent.isFile()
- dirent.isSymbolicLink()
fs.opendir
fs.opendir(path[, options], callback)
打开一个目录,返回 fs.Dir 对象
const fs = require('fs/promises');
async function print(path) {
const dir = await fs.opendir(path);
for await (const dirent of dir) {
console.log(dirent.name);
}
}
print('./').catch(console.error);
可以通过 dir.read() 迭代 dir
const fs = require('fs/promises');
async function print(path) {
const dir = await fs.opendir(path);
let dirent = await dir.read();
while (dirent) {
console.log(dirent.name);
dirent = await dir.read();
}
dir.close();
}
print('./').catch(console.error);
fs.readdir
fs.readdir(path[, options], callback)
读取目录的内容,回调有两个参数 (err, files),其中 files 是目录中的文件名的数组(不包括 '.' 和 '..')
options
- encoding:默认值 utf8,如果 encoding 设置为 'buffer',则返回的文件名是 Buffer 对象
- withFileTypes:默认值 false,设置为 true 后回调函数 files 数组将包含 fs.Dirent 对象
const fs = require('fs/promises');
async function print(path) {
const files = await fs.readdir(path);
for (const file of files) {
console.log(file);
}
}
print('./').catch(console.error);
fs.mkdir
fs.mkdir(path[, options], callback)
创建目录
options
- recursive:默认值 false,设置为 true 时候相当命令
mkdir -p
会把不存在的目录创建 - mode:默认值 0o777,Windows 不支持
// 创建 /tmp/a/apple 目录,无论是否存在 /tmp 和 /tmp/a 目录。
fs.mkdir('/tmp/a/apple', { recursive: true }, err => {
if (err) throw err;
});
fs.rmdir
fs.rmdir(path[, options], callback)
fs.rmdir 用于删除文件夹
options
- recursive:默认值 false,如果为 true,则执行递归的目录删除。在递归模式中,如果 path 不存在则不报告错误,并且在失败时重试操作
- retryDelay:默认值 100,出现异常后重试之间等待毫秒数。如果 recursive 选项不为 true,则忽略此选项
- maxRetries:默认值为 0,表示出现异常后重试的次数,如果遇到 EBUSY、 EMFILE、 ENFILE、 ENOTEMPTY 或 EPERM 错误,则 Node.js 将会在每次尝试时以 retryDelay 毫秒的线性回退来重试该操作。 如果 recursive 为 false,则忽略此选项
const fs = require('fs');
fs.rmdir('./tmp', { recursive: true }, err => console.log);
之前 rmdir 只能删除空的文件夹,现在可以连同文件一起删除了
最新文章
- c++防止客户端多开巧妙代码
- Sql Server作业
- 【python】入门学习(二)
- php 新特性
- 理解Cookie和Session机制
- Lvs+Keepalived+Squid+Nginx负载均衡
- 转:const“变量”、define的常量和static 变量
- 7——使用TextView实现跑马灯
- C++中cin输入类型不匹配解决方法
- Java: MissingResourceException, ";Can't find bundle for base name myMessage, locale zh_CN";
- JavaScript高级程序设计:第十二章
- iOS学习之应用之间的操作(转发)
- 记录python接口自动化测试--requests使用和基本方法封装(第一目)
- c++ primer plus 第二章 \n与endl在输出上的区别
- Java对象引用和对象赋值
- 计算机原码、补码、反码与java移位运算符(<;<;/>;>;/>;>;>;)
- tomcat 线程数与 mysql 连接数综合调优
- mybatis-generator 详细配置及使用,爬坑记录
- progress进度条的样式修改
- 【FFT&;NTT 总结】
热门文章
- 面试题之----禁掉cookie的session使用方案
- Java Web(5)-Servlet详解(下)
- IDEA去掉Autowired的黄色背景和对象的红线
- PHP range() 函数
- Python 字典(Dictionary) clear()方法
- Hive对字段进行urlDecode
- linux学习笔记之makefile
- 恢复HTML表格笔记
- AAPT: error: resource android:attr/dialogCornerRadius not found. Android resource linking failed
- Springboot日志LOGO改变和设计