在 Node.js 中,fs
(File System)模块是一个非常重要的核心模块,它提供了用于与文件系统进行交互的各种方法。通过 fs
模块,我们可以实现文件的读写、创建、删除、重命名等操作,下面将详细介绍 fs
模块的基础操作。
fs
模块在使用 fs
模块之前,我们需要先引入它。在 Node.js 中,可以使用 require
函数来引入:
const fs = require('fs');
同步读取文件会阻塞 Node.js 事件循环,直到文件读取完成。使用 fs.readFileSync
方法来实现:
const fs = require('fs');
try {
const data = fs.readFileSync('example.txt', 'utf8');
console.log('同步读取的文件内容:', data);
} catch (err) {
console.error('读取文件时出错:', err);
}
上述代码中,fs.readFileSync
方法接受两个参数,第一个参数是文件的路径,第二个参数是文件的编码格式(可选,默认为 null
,返回的是 Buffer
对象)。如果文件读取成功,会返回文件的内容;如果出错,会抛出异常,我们可以使用 try...catch
语句来捕获并处理异常。
异步读取文件不会阻塞 Node.js 事件循环,适合处理大量文件或需要高性能的场景。使用 fs.readFile
方法来实现:
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error('读取文件时出错:', err);
return;
}
console.log('异步读取的文件内容:', data);
});
fs.readFile
方法接受三个参数,前两个参数与 fs.readFileSync
相同,第三个参数是一个回调函数,当文件读取完成后会调用该回调函数。回调函数接受两个参数,第一个参数是错误对象,如果读取过程中出错,该对象会包含错误信息;第二个参数是文件的内容。
使用 fs.writeFileSync
方法来同步写入文件:
const fs = require('fs');
try {
fs.writeFileSync('newFile.txt', '这是新写入的内容。', 'utf8');
console.log('文件写入成功!');
} catch (err) {
console.error('写入文件时出错:', err);
}
fs.writeFileSync
方法接受三个参数,第一个参数是文件的路径,如果文件不存在会创建该文件;第二个参数是要写入的内容;第三个参数是文件的编码格式(可选,默认为 utf8
)。
使用 fs.writeFile
方法来异步写入文件:
const fs = require('fs');
fs.writeFile('newFileAsync.txt', '这是异步写入的内容。', 'utf8', (err) => {
if (err) {
console.error('写入文件时出错:', err);
return;
}
console.log('文件异步写入成功!');
});
fs.writeFile
方法接受四个参数,前三个参数与 fs.writeFileSync
相同,第四个参数是一个回调函数,当文件写入完成后会调用该回调函数。回调函数接受一个错误对象,如果写入过程中出错,该对象会包含错误信息。
使用 fs.appendFile
方法可以向文件中追加内容:
const fs = require('fs');
fs.appendFile('newFile.txt', '\n这是追加的内容。', 'utf8', (err) => {
if (err) {
console.error('追加内容时出错:', err);
return;
}
console.log('内容追加成功!');
});
fs.appendFile
方法接受四个参数,与 fs.writeFile
方法类似,会将指定的内容追加到文件的末尾。
使用 fs.unlink
方法可以删除文件:
const fs = require('fs');
fs.unlink('newFile.txt', (err) => {
if (err) {
console.error('删除文件时出错:', err);
return;
}
console.log('文件删除成功!');
});
fs.unlink
方法接受两个参数,第一个参数是要删除的文件的路径,第二个参数是一个回调函数,当文件删除完成后会调用该回调函数。回调函数接受一个错误对象,如果删除过程中出错,该对象会包含错误信息。
使用 fs.rename
方法可以重命名文件:
const fs = require('fs');
fs.rename('newFileAsync.txt', 'renamedFile.txt', (err) => {
if (err) {
console.error('重命名文件时出错:', err);
return;
}
console.log('文件重命名成功!');
});
fs.rename
方法接受三个参数,第一个参数是原文件的路径,第二个参数是新文件的路径,第三个参数是一个回调函数,当文件重命名完成后会调用该回调函数。回调函数接受一个错误对象,如果重命名过程中出错,该对象会包含错误信息。
操作 | 同步方法 | 异步方法 |
---|---|---|
读取文件 | fs.readFileSync |
fs.readFile |
写入文件 | fs.writeFileSync |
fs.writeFile |
追加内容 | 无 | fs.appendFile |
删除文件 | 无 | fs.unlink |
重命名文件 | 无 | fs.rename |
通过以上介绍,我们了解了 Node.js 中 fs
模块的基础文件系统操作。在实际开发中,建议尽量使用异步方法,以避免阻塞 Node.js 事件循环,提高程序的性能。