【Node.js入门笔记4---fs 目录操作】
Node.js入门笔记4
- Node.js---fs 目录操作
- 一、目录操作
- 1.fs.mkdir():创建目录。异步,非阻塞。
- 创建单个目录
- 创建多个目录
- 创建目前之前需要确认是否存在:
- 2. fs.mkdirSync():用于创建一个新的目录。异步,非阻塞。
- 3.fs.rmdir():删除空目录。异步。
- 4. fs.rmdirSync():删除空目录。同步。
- 5. fs.rm()(Node.js 14.4+):递归删除目录及内容。
- 6. fs.readdir():获取目录下的文件和子目录列表。
Node.js—fs 目录操作
一、目录操作
1.fs.mkdir():创建目录。异步,非阻塞。
语法格式:
fs.mkdir(path,[options] ,callback)
参数解读:
参数1:必选参数,字符串,表示要创建的目录的路径。
参数2:可选参数,表示以什么编码格式来读取文件。
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。
创建单个目录
const fs = require('fs');fs.mkdir('./new-directory', (err) => {if (err) throw err;console.log('目录创建成功');});
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\learning\mkdir.js
如图:
然后电脑找到这个目录:C:\Users\Administrator\new-directory
创建多个目录
const fs = require('fs');// 创建多个目录
fs.mkdir('./new-directory/new-sub-directory', { recursive: true }, (err) => {if (err) throw err;console.log('目录创建成功');
});
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\learning\mkdir.js
结果:C:\Users\Administrator\new-directory
创建目前之前需要确认是否存在:
const fs = require('fs');
const path = require('path');const dir = 'myDir';if (!fs.existsSync(dir)) {fs.mkdir(dir, (err) => {if (err) throw err;console.log('目录创建成功');});
} else {console.log('目录已存在');
}
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】```bash
node C:\Users\Administrator\Desktop\mkdir.js
2. fs.mkdirSync():用于创建一个新的目录。异步,非阻塞。
语法格式
fs.mkdirSync(path[, options])
参数解读:
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
参数2:必选参数,表示要写入的内容。
创建单个目录:
const fs = require('fs');try {// 创建一个名为 'newDir' 的目录fs.mkdirSync('newDir');console.log('目录创建成功');
} catch (err) {if (err.code === 'EEXIST') {console.log('目录已经存在');} else {console.error('创建目录时出错:', err);}
}
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\mkdirSync.js
结果如图:C:\Users\Administrator\newDir
创建多个目录:
const fs = require('fs');try {// 递归创建一个嵌套目录 'parent/child/grandchild'fs.mkdirSync('parent/child/grandchild', { recursive: true });console.log('目录递归创建成功');
} catch (err) {console.error('创建目录时出错:', err);
}
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\mkdirSync.js
3.fs.rmdir():删除空目录。异步。
语法格式:
fs.rmdir(path[, options], callback)
参数解读:
参数1:必选参数,需要指定一个文件路径的字符串,表示要删除的路径。
参数2:可选参数,默认为 false。
参数3:必选参数,回调函数。
// 1.导入fs模块
const fs = require('fs');// 要删除的目录路径
const dirPath = './test';fs.rmdir(dirPath, (err) => {if (err) {if (err.code === 'ENOENT') {console.log('目录不存在');} else if (err.code === 'ENOTEMPTY') {console.log('目录不为空,无法删除');} else {console.error('删除目录时出错:', err);}} else {console.log('目录删除成功');}
});
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\learning\rmdir.js
4. fs.rmdirSync():删除空目录。同步。
语法格式:
fs.rmdirSync(path[, options])
参数解读:
参数1:必选参数,文件夹路径
参数2:可选参数,options对象或编码字符串
同步进行的就不能用回调函数观察数据是否成功,所有用try catch来捕获问题
const fs = require('fs');// 要删除的目录路径
const dirPath = 'emptyDir';try {fs.rmdirSync(dirPath);console.log('目录删除成功');
} catch (err) {if (err.code === 'ENOENT') {console.log('目录不存在');} else if (err.code === 'ENOTEMPTY') {console.log('目录不为空,无法删除');} else {console.error('删除目录时出错:', err);}
}
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\rmdirSync.js
5. fs.rm()(Node.js 14.4+):递归删除目录及内容。
语法格式:
fs.rm(path, options, callback);
删除单个文件
// 1.导入fs模块
const fs = require('fs');
const filePath = 'example.txt';// 2.删除文件
// 参数1: 文件路径
// 参数2: 回调函数
fs.rm(filePath, (err) => {if (err) {console.error('删除文件时出错:', err);} else {console.log('文件删除成功');}
});
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\learning\rm.js
递归删除非空目录:
const fs = require('fs');const dirPath = 'exampleDir';
// 参数1: 目录路径
// 参数2: 配置对象
// recursive: 是否递归删除子目录和文件
// force: 是否强制删除
// 参数3: 回调函数
fs.rm(dirPath, { recursive: true, force: true }, (err) => {if (err) {console.error('删除目录时出错:', err);} else {console.log('目录及其子目录和文件删除成功');}
});
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\learning\rm.js
6. fs.readdir():获取目录下的文件和子目录列表。
语法格式:
fs.open(path, flags[, mode], callback)
参数解释:
参数1: 必选参数,文件路径。
参数2: 必选参数,打开文件的方式读写
参数3: 可选参数,设置文件模式(权限),默认为 0666(可读写)
参数4: 必选参数,回调函数。带有两个参数如:callback(err, fd)
// 导入文件系统模块
const fs = require('fs');const directoryPath = '.'; // 当前目录// 参数1: 目录路径
// 参数2: 配置对象
// withFileTypes: 是否返回fs.Dirent对象
// 参数3: 回调函数
fs.readdir(directoryPath, { withFileTypes: true }, (err, files) => {if (err) {console.error('读取目录时出错:', err);return;}files.forEach((file) => {if (file.isDirectory()) {console.log(`${file.name} 是一个目录`);} else {console.log(`${file.name} 是一个文件`);}});
});
写完代码后,需要在terminal控制台输入指令:node 【 js文件的路径】
node C:\Users\Administrator\Desktop\readdir.js