适用于初学者的Node.js:使用文件的基础知识

今天,我们将讨论如何使用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()方法,该方法用于读取文件。 在此示例中,回调函数具有两个参数errdata 。 尝试读取文件时可能发生的错误属于第一个参数,成功操作后获得的数据位于第二个参数中。 请注意, .readFile()fs模块的异步方法。 它的同步版本称为.readFileSync() 。 使用类似的方法来命名其他模块方法。

创建一个新文件


让我们从一个例子开始:

 function fileHandler(){   fs.open('testFile.txt', 'w', (err) => {       if(err) throw err;       console.log('File created');   });  } 

在这里, fs.open()方法用于创建一个新文件。 它以文件名作为第一个参数。 他的第二个参数是一个标志,它告诉系统确切地我们要对文件执行什么操作。 在这种情况下,这是w标志(表示写入的缩写),它表示我们要打开文件进行写入。 .open()方法可以接受各种标志。 以下是其中一些:

  1. r :打开文件进行读取
  2. r+ :打开文件进行读写
  3. rs :打开文件以同步模式读取
  4. w :打开文件进行写入
  5. a :打开文件以将数据写入文件末尾
  6. 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中的文件?

Source: https://habr.com/ru/post/zh-CN452566/


All Articles