1. 简介
Node.js是一种能够以异步事件驱动的方式运行JavaScript代码的JavaScript运行环境,它的内建模块提供了许多基础工具,例如可以通过fs模块进行文件的读取和写入,通过path模块进行路径处理等等。
2. fs文件模块
2.1 文件读取
使用fs模块中的方法可以读取文件中的数据,与其他的Node.js API类似的是,该方法也是异步的。该方法有两个参数:文件路径和回调函数。其中,回调函数的两个参数分别是错误和数据。当读取成功时,错误参数为null,数据为文件的内容;否则,错误参数将包含相关错误信息,数据参数将被忽略。
const fs = require('fs');
fs.readFile('file.txt', (err, data) => {
if (err) throw err;
console.log(data);
});
2.2 文件写入
使用fs模块中的writeFile方法可以将数据写入文件中。该方法有三个参数:文件路径、写入的数据和回调函数。回调函数的参数仅有一个错误信息。如果错误参数为null,说明写入成功;否则,将输出相关错误信息。
const fs = require('fs');
fs.writeFile('file.txt', 'Hello World!', function (err) {
if (err) throw err;
console.log('File has been saved!');
});
2.3 文件删除
使用fs模块中的unlink方法可以删除指定的文件。该方法有两个参数:文件路径和回调函数。回调函数的参数仅有一个错误信息。如果错误参数为null,说明删除成功;否则,将输出相关错误信息。
const fs = require('fs');
fs.unlink('file.txt', function (err) {
if (err) throw err;
console.log('File has been deleted!');
});
3. path路径模块
3.1 路径解析
使用path模块的方法可以在不同操作系统中自动解析文件路径字符串。例如,使用join方法来获得文件路径。
const path = require('path');
const path_file = path.join(__dirname, 'file.txt');
console.log(path_file); // '/Users/yourname/project/file.txt' on Unix-based systems
3.2 路径标准化
使用path模块的normalize方法可以用斜杠(/)作为目录分隔符,而不受操作系统的影响。
const path = require('path');
const path_a = '/foo/bar//baz/asdf/quux/..';
console.log(path.normalize(path_a)); // '/foo/bar/baz/asdf'
3.3 路径拼接
使用path模块的join方法可以将多个路径拼接成一个。该方法会将所有参数都串起来,并返回一个统一的路径。
const path = require('path');
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); // '/foo/bar/baz/asdf'
3.4 路径分解
使用path模块的parse方法可以将路径分解成对象形式的元素,例如:root、dir、base、ext和name。
const path = require('path');
const path_file = '/foo/bar/baz/asdf/quux.html';
console.log(path.parse(path_file));
// {
// root: '/',
// dir: '/foo/bar/baz/asdf',
// base: 'quux.html',
// ext: '.html',
// name: 'quux'
// }
3.5 路径格式化
使用path模块的format方法可以将路径对象转换为路径字符串。
const path = require('path');
const path_obj = {
dir: '/foo/bar/baz/asdf',
base: 'quux.html'
};
console.log(path.format(path_obj)); // '/foo/bar/baz/asdf/quux.html'
4. 结束语
Node.js的fs和path模块是非常常用的模块,其中fs模块主要用于处理文件操作,包含文件的读取、写入和删除等操作,而path模块主要用于路径的处理,包含路径的拼接、标准化和分解等操作。了解这两个模块的使用方法,可以更加有效地使用Node.js编写出优秀的代码。