前言
Node.js内置了许多核心模块,这些模块提供了各种功能,从文件系统操作到网络通信,再到加密和解密等。本文将深入介绍Node.js中一些重要的内置模块,帮助开发者更好地理解和利用这些核心功能。
fs模块:文件系统操作
Node.js中的fs(File System)模块为开发者提供了丰富的文件系统操作功能。通过fs模块,我们可以轻松地读取文件、写入文件、创建目录、删除文件等。以下是fs模块的一些常见用法:
// 文件系统
const fs = require('fs');
// 同步
const syncData = fs.readFileSync('./data.txt', 'utf-8'); // 读取文件
console.log(syncData);
// 异步
fs.readFile('./data.txt', 'utf-8', (err, res) => { // 读取文件
if (err) throw err;
console.log(res);
})
// Promise
fs.promises.readFile('./data.txt', 'utf-8').then(res => { // 读取文件
console.log(res);
})
readFile(path, options, callback)第一个参数表示要读取的文件的路径,第二个参数表示读取文件时的选项,第三个参数是一个回调函数,当文件读取完成后被调用,它有两个参数:err 和 data。
整段代码展示了Node.js中文件系统模块的三种常见文件读取方式:同步读取文件、异步读取文件和Promise读取文件。
const fs = require('fs')
fs.writeFileSync('./target.md', '举头望明月') // 写入文件
const img = fs.readFileSync('./avator.JPG',)
fs.writeFileSync('./pic/avator.JPG', img) //将文件写入到指定目录下
writeFileSync(file, data, options)第一参数表示要写入的文件的路径,第二个参数是要写入文件的数据,第三个参数表示写入文件时的选项,通常为文件的编码。
整段代码展示了如何使用Node.js的fs模块进行文件的写入操作。可以进行文本写入和图片写入等操作。
const fs = require('fs')
console.log(fs.statSync('./target.md')); // 通过fs.statSync()方法获取文件的信息
const info = fs.statSync('./target.md')
console.log(info.isDirectory()); // 判断是否是文件夹
console.log(info.isFile()); // 判断是否是文件
statSync(path)只有一个参数,表示要获取信息的文件或目录的路径。
这段代码演示了如何使用 fs.statSync 获取文件信息,以及isDirectory()和isFile()两个方法的使用。
const fs = require('fs')
fs.appendFileSync('./data.txt', '疑是地上霜') // 向文件中追加内容
fs.renameSync('./data.txt', './data1.txt') // 重命名文件
fs.renameSync('./data.txt', './pic/data.md') // 移动文件
fs.unlinkSync('./pic/data.md') // 删除文件
fs.rmSync('pic', { recursive: true }) // 删除文件夹
这段代码演示了向文件中追加内容方法(appendFileSync)、重命名(renameSync)、移动(renameSync)和删除(unlinkSync)文件。
const fs = require('fs')
const info = fs.readdirSync('./test') //读取目录
console.log(info);
fs.mkdirSync('./test-dir/data/list', {recursive: true}) //创建目录
fs.rmdirSync('./test-dir', {recursive: true}) //删除目录
fs.watch('./', {recursive: true}, (eventType, filename) => {
console.log(`当前文件夹下${filename}文件变更为:${eventType}`);
})
这段代码展示了读取目录(readdirSync)、创建目录(mkdirSync)、 删除目录(rmdirSync)以及监视文件系统变化的方法(watch)
path模块:文件路径操作
在Node.js中,path模块是一个用于处理文件路径的核心模块,提供了一些实用的方法来处理文件和目录的路径。以下是path模块的一些常用方法:
const path = require('path')
console.log(path.join('a', 'b', 'c'));
console.log(path.join(process.cwd(), '/model', 'index')); // 以当前工作目录为基准,拼接路径
console.log(path.resolve('a', 'b', 'c')); // 以当前文件所在目录为基准,拼接路径
console.log(path.dirname(process.cwd())); // 返回路径的目录名
console.log(path.basename('a/b/c.js')); // 返回路径的最后文件
console.log(path.basename(__filename)); // 返回当前文件的文件名
console.log(path.extname(__filename)); // 返回文件的扩展名
console.log(path.normalize('a////b//c./js')); // 讲路径转化为规范化路径
console.log(path.parse(__filename)); // 解析路径
console.log(path.sep); // 获取当前系统的路径分隔符
在这大段代码中join()方法是将路径片段 'a', 'b', 'c' 拼接起来,resolve()方法 是将路径片段解析为绝对路径,dirname()方法是返回当前工作目录的目录名,basename()方法是返回路径 'a/b/c.js' 的最后一部分,即"c.js",normalize()方法是将路径字符串规范化,即"a/b/c./js",parse()方法是解析当前文件路径字符串,返回包含多个信息的对象,sep()方法是获取当前系统的路径分隔符,在 Unix 系统上输出: '/'在 Windows 系统上输出:'\\'