今天,我们将讨论如何使用Node.js处理文件系统,并考虑对文件执行的基本操作。 这些操作包括:
在多种情况下都需要执行此类操作。

FS模块
Node.js有一个标准模块
fs
(文件系统的缩写),它为开发人员提供了用于处理文件系统的工具。 您可以将其导入到项目中,如下所示:
var fs = require('fs');
该模块的方法以同步和异步形式表示。 传递给异步方法的回调函数将错误对象作为第一个参数,将操作成功时返回的数据作为第二个参数。 考虑一个例子:
function fileHandler(){ fs.readFile('textFile.txt', 'utf8', (err, data) => { if(err) throw err; console.log(data); }); }
我们将详细讨论
.readFile()
方法,该方法用于读取文件。 在此示例中,回调函数具有两个参数
err
和
data
。 尝试读取文件时可能发生的错误属于第一个参数,成功操作后获得的数据位于第二个参数中。 请注意,
.readFile()
是
fs
模块的异步方法。 它的同步版本称为
.readFileSync()
。 使用类似的方法来命名其他模块方法。
创建一个新文件
让我们从一个例子开始:
function fileHandler(){ fs.open('testFile.txt', 'w', (err) => { if(err) throw err; console.log('File created'); }); }
在这里,
fs.open()
方法用于创建一个新文件。 它以文件名作为第一个参数。 他的第二个参数是一个标志,它告诉系统确切地我们要对文件执行什么操作。 在这种情况下,这是
w
标志(表示写入的缩写),它表示我们要打开文件进行写入。
.open()
方法可以接受各种标志。 以下是其中一些:
r
:打开文件进行读取r+
:打开文件进行读写rs
:打开文件以同步模式读取w
:打开文件进行写入a
:打开文件以将数据写入文件末尾a+
:打开文件以在文件末尾读取和写入数据
现在,在继续下一个示例之前,我们将使用某种文本编辑器编辑刚刚创建的
testFile.txt
文件。 向其添加以下文本:
This is a test file. We're learning about Node.js File System. The End.
将数据写入文件
让我们讨论一下如何向文件中添加一些内容:
function fileHandler(){ fs.appendFile('testFile.txt', ' This line is beyond the end.', (err) => { if(err) throw err; console.log('Data has been added!'); }); }
在这里,我们使用
.appendFile()
方法将数据追加到现有文件的末尾。 作为第一个参数,此方法接受文件名,作为第二个参数-需要添加到文件末尾的数据。 与往常一样,第三个参数是回调函数。
上面显示的代码成功执行后,文件内容将如下所示:
This is a test file. We're learning about Node.js File System. The End. This line is beyond the end.
还有另一种将数据写入文件的方法。 它暗示使用
.writeFile()
方法。 此方法与
.appendFile()
非常相似,但有一个重要区别。 事实是,使用
.appendFile()
方法,我们将新数据添加到文件中已经存在的数据之后。 当使用
.writeFile()
方法时,文件的内容将替换为一个新的文件。 让我们尝试这种方法:
function fileHandler(){ fs.writeFile('testFile.txt', "I'm the replacement you've been looking for.", (err) => { if(err) throw err; console.log('Data has been replaced!'); }); }
成功操作后,该文件将包含以下文本:
I'm the replacement you've been looking for.
如您所见,该文件的内容完全被一个新文件替换。
读取档案
为了读取文件,
fs
模块提供了
.readFile()
方法,这是我们已经看到的用法示例。 它以文件名作为第一个参数,并以编码作为第二个参数。 第三个参数是回调函数。 让我们尝试使用以下方法将
testFile.txt
文件的内容打印到控制台:
function fileHandler(){ fs.readFile('testFile.txt', 'utf8', (err, data) => { if(err) throw err; console.log('--------- [File Data] ---------'); console.log(data); console.log('--------- [File Data] ---------'); }); }
那就是我们得到的。
文件数据输出到控制台现在让我们谈谈重命名文件。
重命名文件
要重命名文件,请使用
.rename()
方法:
function fileHandler(){ fs.rename('testFile.txt', 'newTestFile.txt', (err) => { if(err) throw err; console.log('File renamed successfully!'); }); }
该方法的第一个参数是现有文件的名称,第二个参数是此文件的新名称。 成功调用此方法后,
testFile.txt
文件将变为
newTestFile.txt
。
文件删除
要删除文件,请使用
.unlink()
方法:
function fileHandler(){ fs.unlink('newTestFile.txt', (err) => { if(err) throw err; console.log('File deleted successfully!'); }); }
成功调用此方法将删除
newTestFile.txt
文件。
总结
在本文中,我们研究了在Node.js中使用文件系统的基础知识。 如果您想更深入地掌握该主题,请查看Node.js发布周期中的资料,阅读
fs
模块的
文档 ,然后尝试尝试您在实践中学到的所有知识。
亲爱的读者们! 您是否使用标准的fs模块或其他工具来处理Node.js中的文件?
