node中的fs模块、path模块

1. node中的fs模块

在Node.js中,fs模块是非常重要的一个模块,它提供了许多与文件系统相关的功能,例如读写文件、修改文件的权限等。为了使用fs模块中提供的功能,我们需要使用require函数将该模块加载进来,然后就可以调用该模块中提供的函数来执行具体的操作了。

1.1 读取文件

在fs模块中,最基本的操作之一就是读取文件。为了读取文件,我们需要使用fs.readFile函数,该函数接受两个参数,第一个参数是要读取的文件路径,第二个参数是文件编码类型(可选,默认为utf8)。下面是一个简单的例子,读取test.txt文件中的内容:

const fs = require('fs');

fs.readFile('test.txt', 'utf8', (err, data) => {

if (err) throw err;

console.log(data);

});

上面的代码中,我们首先使用require函数加载了fs模块,然后使用fs.readFile函数读取了test.txt文件中的内容,并在回调函数中输出了文件内容。需要注意的是,在使用fs.readFile函数时,由于读文件是一个异步操作,因此需要使用回调函数来获取读取的结果。在回调函数中,第一个参数是错误对象,如果读取文件失败,err参数将会是一个非null值。

1.2 写入文件

在fs模块中,我们还可以使用fs.writeFile函数来写入文件。该函数接受三个参数,第一个参数是要写入的文件路径,第二个参数是要写入的内容,第三个参数是文件编码类型(可选,默认为utf8)。下面是一个简单的例子,将Hello World写入到test.txt文件中:

const fs = require('fs');

fs.writeFile('test.txt', 'Hello World', (err) => {

if (err) throw err;

console.log('文件已保存');

});

上面的代码中,我们使用fs.writeFile函数将字符串Hello World写入到test.txt文件中。需要注意的是,fs.writeFile函数在将内容写入到文件中后,会自动关闭文件句柄,因此不需要再手动关闭文件。

1.3 读写流

在fs模块中,我们还可以使用fs.createReadStream函数来创建一个可读流,使用fs.createWriteStream函数来创建一个可写流,从而实现文件的读写。下面是一个简单的例子,将test.txt文件中的内容复制到test-copy.txt文件中:

const fs = require('fs');

const readStream = fs.createReadStream('test.txt');

const writeStream = fs.createWriteStream('test-copy.txt');

readStream.pipe(writeStream);

console.log('文件已复制');

上面的代码中,我们首先使用fs.createReadStream函数创建了一个可读流readStream,然后使用fs.createWriteStream函数创建了一个可写流writeStream。接着,我们使用readStream.pipe(writeStream)函数将可读流中的内容写入到可写流中,从而实现了文件的复制。需要注意的是,在使用pipe函数连接可读流和可写流时,需要保证两个流的编码类型一致。

2. node中的path模块

在Node.js中,path模块是另一个非常重要的模块,它提供了与路径相关的功能,例如获取路径的信息、拼接路径、解析路径等。为了使用path模块中提供的功能,我们同样需要使用require函数将该模块加载进来,然后就可以调用该模块中提供的函数来执行具体的操作了。

2.1 路径拼接

在path模块中,我们可以使用path.join函数来将多个路径拼接成一个路径。该函数接受任意数量的参数,每个参数都是一个路径段,下面是一个简单的例子:

const path = require('path');

const joinedPath = path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');

console.log(joinedPath); // /foo/bar/baz/asdf

在上面的例子中,我们使用path.join函数将/foobarbaz/asdfquux..这几个路径段拼接成一个路径。

2.2 路径解析

在path模块中,我们可以使用path.parse函数来将路径解析成一个对象,该对象包含路径的各个组成部分(rootdirbaseextname),下面是一个简单的例子:

const path = require('path');

const parsedPath = path.parse('/foo/bar/baz.txt');

console.log(parsedPath); // { root: '/', dir: '/foo/bar', base: 'baz.txt', ext: '.txt', name: 'baz' }

在上面的例子中,我们使用path.parse函数将路径/foo/bar/baz.txt解析成了一个对象,该对象包含了该路径的各个组成部分。

2.3 路径格式化

在path模块中,我们可以使用path.format函数将一个路径对象格式化成一个路径字符串,下面是一个简单的例子:

const path = require('path');

const formattedPath = path.format({ root: '/', dir: '/foo/bar', base: 'baz.txt', ext: '.txt', name: 'baz' });

console.log(formattedPath); // /foo/bar/baz.txt

在上面的例子中,我们首先将一个路径对象传递给path.format函数,然后将返回的路径字符串打印出来。

2.4 判断路径是否为绝对路径

在path模块中,我们可以使用path.isAbsolute函数判断一个路径是否为绝对路径,下面是一个简单的例子:

const path = require('path');

console.log(path.isAbsolute('/foo/bar')); // true

console.log(path.isAbsolute('baz/quux')); // false

在上面的例子中,我们分别使用path.isAbsolute函数判断了/foo/barbaz/quux两个路径是否为绝对路径。

2.5 获取路径的绝对路径

在path模块中,我们可以使用path.resolve函数获取一个路径的绝对路径。该函数接受任意数量的参数,每个参数都是一个路径段,下面是一个简单的例子:

const path = require('path');

console.log(path.resolve('/foo/bar', './baz')); // /foo/bar/baz

在上面的例子中,我们使用path.resolve函数将/foo/bar./baz两个路径段拼接成一个绝对路径。

以上便是fs模块和path模块的一些常用功能,它们在Node.js中担任了非常重要的角色。