Node FS – NodeJS 创建文件、读取文件、写入文件
Node FS代表NodeJS文件系统模块。在我之前的帖子中,我们已经讨论了如何使用require()调用导入Node JS模块。在阅读本文之前,请阅读这篇帖子“Node JS导出和导入模块”以了解require()调用的用法。
节点文件系统
在这篇文章中,我们将讨论Node.js平台的“fs”模块。FS代表文件系统。这个模块也被称为IO或文件系统或流模块。
NodeJS的FS模块是一个内建模块,用于处理文件和目录。它提供了许多功能,包括读取、写入、复制、删除和移动文件等。使用FS模块,我们可以轻松地进行文件操作,例如创建新文件、打开现有文件以及查看和修改文件的内容。此外,FS模块还提供了异步和同步的操作方法,可以根据需要选择适合的方式来处理文件。
Node FS模块简介
Node FS模块提供与文件系统进行交互的API,可以执行一些IO操作,例如创建文件、读取文件、删除文件、更新文件等。与一些Node模块(如“npm”、“http”等)类似,Node JS的“fs”模块也是Node JS平台的基本组成部分。我们无需进行任何设置即可使用Node JS FS模块。
节点文件系统模块导入
我们只需要将node fs模块导入到我们的代码中,并开始编写IO操作的代码。要导入一个node fs模块;
var fs = require("fs");
这个require()调用将Node JS的”fs”模块导入缓存并创建一个类型为Node FS的对象。一旦完成,我们就可以使用node fs对象执行任何I/O操作。假设我们的${Eclipse_Workspace}指的是D:\RamWorkspaces\NodeWorkSpace。从现在开始,我将使用这个变量来引用我的Eclipse工作空间。作为Java或DOT NET或C/C++开发人员,我们已经学习并编写了一些I/O程序。I/O或流有两种类型:
- Write Stream – To write data to a Stream.
- Read Stream – To read data from a Stream.
使用Node.js创建文件
现在我们将讨论如何使用Node JS FS API创建一个新文件。
-
- 在Eclipse IDE中创建一个Node JS项目。
从前面的示例中复制package.json文件并更新所需内容。
{
"name": "filesystem",
"version": "1.0.0",
"description": "文件系统示例",
"main": "filesystem",
"author": "User 01",
"engines":{
"node": "*"
}
}
创建一个包含以下内容的JavaScript文件;fs-create-file.js
/ **
* Node FS示例
* Node JS创建文件
* /
var fs = require(“ fs”);
var createStream = fs.createWriteStream(“User 01.txt”);
createStream.end();
代码说明:var fs = require(“ fs”)要求()调用将指定的Node FS模块加载到缓存中并将其分配给名为fs的对象。 fs.createWriteStream(filename)调用用于创建具有给定filename的写入流和文件。 createStream.end()调用结束或关闭已打开的流。
在执行fs-create-file.js之前,首先观察文件系统项目的内容,您会注意到“User01.txt”文件不可用。
在${Eclipse_Workspace}/filesystem下打开命令提示符,并运行node命令来执行fs-create-file.js文件,如下图所示。现在注意您的项目目录内容,您将注意到一个名为“ User 01.txt”的空文件。
用Node.js写入文件
我们将使用 Node FS API 来创建一个新文件并将一些数据写入其中。这是我们先前示例的延续。
-
- 从${Eclipse_Workspace}/filesystem文件夹中删除之前创建的“User 01.txt”文件。
创建一个名为fs-write-file.js的JavaScript文件,内容如下:
/**
* Node FS示例
* Node JS写入文件
*/
var fs = require("fs");
var writeStream = fs.createWriteStream("User 01.txt");
writeStream.write("嗨,User 01用户。");
writeStream.write("谢谢。");
writeStream.end();
使用createStream.write(sometext)方法将一些文本写入文件。
在${Eclipse_Workspace}/filesystem文件夹中打开命令提示符,并运行node命令来执行fs-write-file.js文件,如下所示。
转到${Eclipse_Workspace}/filesystem文件夹并打开“User 01.txt”文件以验证其内容。现在我们已经创建了一个新文件并向其中写入了一些数据。
使用Node JS读取文件。
我们将使用Node FS API打开和读取现有文件的内容,并将该内容写入控制台。这是我们之前示例的延续。在这里,我们将使用命名的JavaScript函数。请通过这个示例来理解。
用以下内容创建一个JavaScript文件: fs-read-file1.js
/**
* Node FS读取文件
* Node JS读取文件
*/
var fs = require("fs");
function readData(err, data) {
console.log(data);
}
fs.readFile('User 01.txt', 'utf8', readData);
代码说明:readData()是一个JavaScript函数,它有两个参数;
err: 是一个错误对象。当我们的程序无法打开或读取文件中的数据时,FS模块会将一些错误消息写入此参数。
data: 是一个变量,用于存储一些数据。
此函数接受data参数,并将该数据打印到控制台。fs.readFile()是Node JS FS API。它接受三个参数;
文件名
要读取的文件数据格式
JavaScript函数或JavaScript匿名函数readFile()从给定格式(第二个参数)的文件名(第一个参数)中读取数据,并使用第三个参数中给出的函数执行一些操作。在这个例子中,我们使用一个普通的JavaScript函数作为第三个参数。我们将在下一个例子中看到如何使用JavaScript匿名函数。在我们的例子中,readFile()从“User 01.txt”文件中读取数据,并将其写入控制台。如果我们不使用’utf8’格式,那么我们将得到二进制数据。我们将在几分钟内验证这一点。
在${Eclipse_Workspace}/filesystem处打开命令提示符,并运行node命令以执行fs-read-file1.js文件。现在我们已经观察到我们的代码已成功打开文件,读取其内容并将其内容写入控制台。
Node.js 以二进制格式读取文件
现在我们将使用JavaScript匿名函数从文件中读取数据。通过这个示例来理解。它与之前的fs-read-file1.js示例类似,只是使用了匿名函数。如果你对JavaScript匿名函数不熟悉,请参考一些JavaScript教程并了解一些基本概念。创建一个包含以下内容的JavaScript文件:fs-read-file2.js。
/**
* Node FS File System Module
* Node.js read file example
*/
var fs = require("fs");
fs.readFile('User 01.txt', 'utf8', function(err, data) {
console.log(data);
});
代码说明:这里的readFile()函数使用JavaScript匿名函数从文件中读取数据,并将文件内容写入控制台。当我们运行这个文件时,我们将得到与fs-read-file2.js示例相同的输出。现在移除“utf8”数据格式以查看二进制输出。
/**
* Node FileSystem Module
* Node JS Read File Binary Data
*/
var fs = require("fs");
fs.readFile('User 01.txt', function(err, data) {
console.log(data);
});
[anyFSAPIObject] + Press . (dot) + After dot Press (CTRL + Space Bar)