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
函数将/foo
、bar
、baz/asdf
、quux
、..
这几个路径段拼接成一个路径。
2.2 路径解析
在path模块中,我们可以使用path.parse
函数来将路径解析成一个对象,该对象包含路径的各个组成部分(root
、dir
、base
、ext
和name
),下面是一个简单的例子:
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/bar
和baz/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中担任了非常重要的角色。