node.js fs模块,node中fs模块怎么引入

  node.js fs模块,node中fs模块怎么引入

  本文带你了解Node.js中的文件系统模块,介绍使用文件系统模块(fs模块)的方法,并介绍一些最常用最有用的fs方法。

  node.js速度课程简介:进入学习

  文件模块(简称fs)允许我们访问计算机上的文件系统并与之交互。[推荐研究:《nodejs 教程》]

  使用fs模块,我们可以执行以下操作:

  创建文件和目录修改文件和目录删除文件和目录读取文件和目录的内容.本文将向您介绍最常见和最有用的fs方法。趁还来得及,我们来看看这些方法是什么。

  

如何使用 fs

  文件系统模块是一个核心Node.js模块。这意味着我们不必安装它。我们唯一需要做的就是将fs模块导入到我们自己的文件中。

  因此,在文件的顶部添加:

  Const fs=require(fs )现在,我们可以使用前缀fs来调用文件系统模块中的任何方法。

  或者,我们可以从fs API导入所需的方法,如下所示:

  Const {writefile,readfile}=require (fs )导入fs模块后,添加:

  Const path=require(path )使用文件系统模块时,不需要路径模块。但是对我们帮助很大!

  

同步与异步

  需要注意的是默认情况下,所有fs方法都是异步的。但是,我们可以通过在方法末尾添加sync来使用同步版本。

  例如,writeFile方法的同步版本是writeFileSync。方法将同步的完成代码,因此它们会阻塞主线程。在Node.js中阻塞主线程被认为是一种不好的做法,我们不应该这样做。

  因此,在下面,我们将在文件系统模块中使用异步方法。

  

写入文件

  要从Node.js应用程序中写入文件,请使用writeFile方法。

  writeFile方法至少接受以下参数:

  内容回调如果指定的文件已经存在,它将用您作为参数提供的内容替换旧内容。如果指定的文件不存在,则创建一个新文件。

  导入fs和path模块后,在文件中编写以下代码:

  fs.writeFile(content.txt ,只工作不玩耍,聪明孩子也变傻!,错误={

  如果(错误)抛出错误

  Process.stdout.write(创建成功!)

  })上面的代码将创建一个名为content.txt的新文件,并添加文本“只工作不玩耍的人会变傻!”!作为内容。如果有任何错误,回调函数将抛出错误。否则,它将向控制台输出文件已成功创建。

  writeFile还有其他变体,例如:

  fs . writefilesync—写入文件承诺。同步写入文件—使用基于承诺的API写入文件

从文件中读取

  在读取文件之前,您需要创建并存储文件的路径。路径模块的路径在这里很方便。

  使用join模块中的path方法,可以创建如下文件路径:

  const file path=path . join(process.cwd(), content.txt )第一个参数process . CWD()返回当前工作目录。现在您已经有了文件路径,您可以读取文件的内容了。

  在文件中编写以下代码:

  fs.readFile(文件路径,(错误,内容)={

  if (error)抛出错误

  process.stdout.write(内容)

  })readFile方法至少接受两个参数:

  如果文件的路径回调有错误,就会抛出错误。否则,它将在终端中输出文件内容。

  readFile还有其他变体,例如:

  fs . read file sync—同步写入文件fsPromises.readfile使用基于promise的API写入文件

读取目录的内容

  在目录中显示文件与读取文件内容非常相似。然而,我们不是传递文件路径,而是传递当前工作目录(我们可以传递任何其他目录)。

  然后,传递一个回调函数来处理响应。在文件中编写以下代码:

  fs.readdir(process.cwd(),(错误,文件)={

  if (error)抛出错误

  console.log(文件)

  })到目前为止,我们只使用process.stdout.write将内容输出到终端。但是,您可以简单地使用console.log,就像上面的代码片段一样。

  如果我们运行应用程序,我们应该得到一个包含目录中所有文件的数组。

  

删除文件

  文件系统模块有一个允许您删除文件的方法。但是,需要注意的是,它只适用于文件,不适用于目录。

  当使用文件路径作为参数调用unlink方法时,它将删除该文件。将以下代码片段添加到文件中:

  fs.unlink(文件路径,错误={

  if (error)抛出错误

  Console.log(该文件已被删除!)

  })如果您重新运行代码,您的文件将被删除!

  

创建目录

  我们可以使用mkdir方法异步创建目录。在文件中编写以下代码:

  fs . mkdir(` $ { process . CWD()}/my folder/second folder `, { recursive:true },(err)={

  如果(错误)抛出错误

  Console.log(文件夹创建成功!)

  })首先,在当前工作目录下新建一个文件夹。如前所述,您可以使用cwd()方法从process对象中获取当前工作目录。

  然后,传递一个或多个要创建的文件夹。但是,这并不意味着您必须在当前工作目录中创建新文件夹。你可以在任何地方创建它们。

  现在,第二个参数是递归选项。如果未设置为true,则无法创建多个文件夹。如果递归选项设置为false,上面的代码将给出一个错误。试试看!

  但是,如果只想创建一个文件夹,就不需要将recursive选项设置为true。

  下面的代码可以正常工作!

  fs . mkdir(` $ { process . CWD()}/my folder `,err={

  如果(错误)抛出错误

  Console.log(文件夹创建成功!)

  });因此,我想强调递归的使用。如果要在文件夹中创建文件夹,需要将其设置为true。它将创建所有文件夹,即使它们不存在。

  另一方面,如果您只想创建一个文件夹,可以将其保留为false。

  

删除目录

  删除目录的逻辑类似于创建目录。如果您查看为创建目录而编写的代码和下面的代码,您会发现相似之处。

  因此,在文件中编写以下代码:

  fs . rmdir(` $ { process . CWD()}/my folder/`,{ recursive: true },err={

  如果(错误)抛出错误

  Console.log(文件夹删除成功!)

  })在文件系统模块中使用rmdir方法,并传递以下参数:

  目录递归属性回调删除如果递归属性设置为true,将删除文件夹及其内容。请注意,如果文件夹包含内容,则为需要将其设置为 true。否则,您将得到一个错误。

  以下代码片段仅在文件夹为空时有效:

  fs . rmdir(` $ { process . CWD()}/my folder/`,err={

  如果(错误)抛出错误

  Console.log(文件夹删除成功!)

  })如果myFolder中有其他文件和/或文件夹,如果{recursive: true}没有传递,将会出错。

  知道什么时候使用递归选项,什么时候不避免问题是很重要的。

  

目录/文件重命名

  使用fs模块,您可以重命名目录和文件。下面的代码片段展示了如何使用rename方法来实现这一点。

  //重命名目录fs . Rename(` { process . CWD()}/my folder/second folder `),` { process . CWD()}/my folder/new folder `,err={

  如果(错误)抛出错误

  Console.log(目录重命名!)

  });//重命名文件fs . Rename(` $ { process . CWD()}/content . txt `,`$ {process.cwd ()}/newfile.txt `,err={

  如果(错误)抛出错误

  Console.log(文件重命名!)

  });rename方法包含三个参数:

  第一个参数是现有的文件夹/文件,第二个参数是新名称回调。因此,要重命名文件或目录,我们需要传递当前文件/目录的名称和新名称。运行应用程序后,应该更新目录/文件的名称。

  

向文件中添加内容

  我们还可以使用appendFile方法向现有文件添加新内容。

  如果我们比较一下writeFile和appendFile这两种方法,可以发现它们是相似的。传递文件路径、内容和回调。

  只工作不玩耍,聪明的孩子也变傻!,错误={

  如果(错误)抛出错误

  只工作不玩耍,聪明的孩子也变傻)

  })上面的代码片段演示了如何向现有文件添加新内容。如果您运行应用程序并打开文件,您应该会看到其中的新内容。

  有关编程的更多信息,请访问:编程视频!Node.js就是这样使用文件系统模块的。常见fs模块方法介绍详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: