Node.js 中的 fs 模块介绍

fs,简称为 ** 文件系统**,是Node中最基本和最有用的模块之一. 在本文中,我们将讨论一些最重要的和最有用的方法来操纵文件系统。

开始的

当然,您可以这样做(https://nodejs.org/en/)。幸运的是,对于我们来说,fs是配备Node的盒子外模块之一,所以它已经可供您使用。

1const fs = require('fs');

同步与非同步

每个 fs 方法都有一个同步和非同步版本,同步表格的名称仅用 Sync 结束,所以一个同步的 fs.writeFile() 变成了 `fs.writeFileSync()'。

基本操作

基本的 CRUD 操作(创建、阅读、更新和删除)非常简单,只有 3 个主要功能。

  • fs.writeFileSync()
  • fs.readFileSync()
  • fs.unlinkSync()

( )

fs.writeFileSync()只需要两个参数;通往新文件位置的路径,该路径必须以新文件的名称和您想要存储的数据结束。

1[label gator.js]
2const gators = [{
3  type: 'cayman'
4}];
5
6fs.writeFileSync('./swamp/cayman.json', JSON.stringify(gators));

结果:

1[label swamp/cayman.json]
2[{"type":"cayman"}]

请记住,fs.writeFileSync()正在完全重写 cayman.json 中的内容,所以如果您将 type: 'cayman' 更改为 type: 'croc' 并重新运行文件, cayman 将被更换。

(

默认情况下,所有数据都作为一个缓存返回,一个特殊的编码的数字字符串,以修复仅仅通过utf8作为第二个参数。

在这里,我们将返回一个空的数组,如果 cayman.json 是空的,并返回数据,如果它存在。

 1[label gator.js]
 2const gators = [{
 3    type: 'cayman'
 4}];
 5
 6const getData = () => {
 7  let data = fs.readFileSync('./swamp/cayman.json', 'utf8');
 8
 9  if (!data) return [];
10  else {
11    const file = JSON.parse(data);
12    return file;
13  }
14}
15
16const data = getData();

无人机( )

解链接是三者中最简单的,只需要通往您想要删除的文件或象征链接的路径。

1fs.unlinkSync('./swamp/cayman.json');

文件夹上的 CRUD 操作

上述三种方法有自己的有用的对象来操纵目录本身。

  • fs.mkdirSync()
  • fs.rmdirSync()
  • fs.readdirSync()

由于fs.mkdirSync()fs.readdirSync()的使用与他们的文件对象相同,我们将用来处理代替fs.rmdirSync()的 gotchas。

( )

使用 fs.rmdirSync() 删除文件夹的主要问题是它只会在空目录上工作,如果你试图使用它来删除 ./swamp 它会返回:

1Error: ENOTEMPTY: directory not empty, rmdir './swamp'

遗憾的是,Node对于这个问题没有本地解决方案,出于某种原因,所以我们必须去其他地方寻找。

我发现的最简单的解决方案是一个名为 rimraf的npm包,所以让我们快速安装。

1$ npm i rimraf

语法非常相似,除非你代替fs,叫‘rimraf.sync()’(或简单的‘rimraf()’为非同步版本),然后按照你的预期,通过你的路径。

1const rimraf = require('rimraf');
2
3rimraf.sync('./swamp');

结论

仅凭借这些几个功能,您将能够处理许多常见的使用案例,以操纵文件及其数据。

任何对新技术的介绍都将伴随着强制性的参考 文档(这确实是探索某事物的最佳方式之一)。

Published At
Categories with 技术
Tagged with
comments powered by Disqus