Heim  >  Artikel  >  Web-Frontend  >  Wie verwendet Node.js das Dateisystemmodul? Einführung in häufig verwendete FS-Modulmethoden

Wie verwendet Node.js das Dateisystemmodul? Einführung in häufig verwendete FS-Modulmethoden

青灯夜游
青灯夜游nach vorne
2021-08-06 10:04:532781Durchsuche

Dieser Artikel führt Sie durch das Dateisystemmodul in Node.js, stellt die Verwendung des Dateisystemmoduls (FS-Modul) vor und stellt einige der gebräuchlichsten und nützlichsten FS-Methoden vor.

Wie verwendet Node.js das Dateisystemmodul? Einführung in häufig verwendete FS-Modulmethoden

Das Dateisystemmodul (kurz fs) ermöglicht uns den Zugriff auf das Dateisystem auf unserem Computer und die Interaktion mit diesem. [Empfohlenes Lernen: „nodejs Tutorialfs)允许我们访问计算机上的文件系统并与之交互。【推荐学习:《nodejs 教程》】

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

  • 创建文件和目录
  • 修改文件和目录
  • 删除文件和目录
  • 读取文件和目录的内容
  • ...

建议:文件系统模块比较复杂,建议查看官方文档,你可以看到所有的方法。

本文将向您介绍最常见和最有用的 fs 方法。事不宜迟,让我们看看这些方法是什么。

如何使用 fs

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

因此,在文件顶部添加:

const fs = require('fs')

现在,我们可以使用前缀 fs 从文件系统模块调用任何方法。

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

const { writeFile, readFile } = require('fs')

注意:为了方便起见,我们还需要导入 path 模块。它是另一个核心 Node.js 模块,它允许我们使用文件和目录路径。

导入 fs 模块后,在文件中添加:

const path = require('path')

使用文件系统模块时,path 模块不是必需的。但它对我们有很大的帮助!

同步与异步

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

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

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

写入文件

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

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

  • 文件名
  • 内容
  • 回调

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

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

fs.writeFile('content.txt', 'All work and no play makes Jack a dull boy!', err => {
  if (err) throw err

  process.stdout.write('创建成功!')
})

上面的代码将创建了一个名为 content.txt 的新文件,并添加了文本 All work and no play makes Jack a dull boy! 作为内容。如果存在任何错误,回调函数将抛出该错误。否则,它将向控制台输出文件创建成功。

writeFile 还有其他变体,例如:

  • fs.writeFileSync — 同步写入文件
  • fsPromises.writeFile — 使用基于 Promise 的 API 写入文件

查看此要点:https://gist.github.com/catalinpit/571ba06c06214b5c8744036c6500af92

从文件中读取

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

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

const filePath = path.join(process.cwd(), 'content.txt')

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

在文件中编写以下代码:

fs.readFile(filePath, (error, content) => {
  if (error) throw error

  process.stdout.write(content)
})

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

  • 文件的路径
  • 回调

如果有错误,它会抛出一个错误。否则,它会在终端中输出文件内容。

readFile 还有其他变体,例如:

  • fs.readFileSync — 同步写入文件
  • fsPromises.readFile"]
Verwenden Sie fs-Modul können wir die folgenden Vorgänge ausführen:
🎜Dieser Artikel stellt Ihnen die gebräuchlichsten und nützlichsten fs-Methoden vor. Lassen Sie uns ohne weitere Umschweife sehen, was diese Methoden sind. 🎜

So verwenden Sie fs

🎜Das Dateisystemmodul ist ein Kernmodul von Node.js. Das bedeutet, dass wir es nicht installieren müssen. Das Einzige, was wir tun müssen, ist, das fs-Modul in eine eigene Datei zu importieren. 🎜🎜Also am Anfang der Datei hinzufügen: 🎜
fs.readdir(process.cwd(), (error, files) => {
  if (error) throw error

  console.log(files)
})
🎜 Jetzt können wir jede Methode aus dem Dateisystemmodul mit dem Präfix fs aufrufen. 🎜🎜Alternativ können wir die erforderlichen Methoden einfach wie folgt aus der fs-API importieren: 🎜
fs.unlink(filePath, error => {
  if (error) throw error

  console.log('文件已删除!')
})
🎜🎜HINWEIS: Der Einfachheit halber müssen wir auch den pfad importieren Modul. Es ist ein weiteres Kernmodul von Node.js, das es uns ermöglicht, mit Datei- und Verzeichnispfaden zu arbeiten. 🎜🎜Fügen Sie nach dem Importieren des fs-Moduls Folgendes in die Datei ein: 🎜
fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) => {
  if (err) throw err

  console.log('已成功创建文件夹!')
})
🎜Das path-Modul ist bei Verwendung des Dateisystemmoduls nicht erforderlich. Aber es hilft uns sehr! 🎜

Synchronisation und asynchron

🎜Es ist zu beachten, dass standardmäßig alle fs-Methoden asynchron sind . Wir können jedoch die synchronisierte Version verwenden, indem wir am Ende der Methode Sync hinzufügen. 🎜🎜Zum Beispiel ist die synchrone Version der Methode writeFile writeFileSync. Synchrone Methoden vervollständigen den Code synchron, sodass sie den Hauptthread blockieren. Das Blockieren des Hauptthreads in Node.js gilt als schlechte Praxis und sollte nicht getan werden. 🎜🎜Im Folgenden werden wir alle die asynchronen Methoden im Dateisystemmodul verwenden. 🎜

Datei schreiben

🎜Um eine Datei aus einer Node.js-Anwendung zu schreiben, verwenden Sie die Methode writeFile. 🎜🎜writeFile-Methode akzeptiert mindestens die folgenden Parameter: 🎜
  • Dateiname 🎜
  • Inhalt 🎜
  • Callback 🎜🎜🎜Wenn die angegebene Datei bereits existiert, wird geschrieben Der alte Inhalt wird durch das ersetzt, was Sie als Argument angeben. Wenn die angegebene Datei nicht existiert, wird eine neue Datei erstellt. 🎜🎜Nachdem Sie die Module fs und path importiert haben, schreiben Sie den folgenden Code in die Datei: 🎜
    fs.mkdir(`${process.cwd()}/myFolder`, err => {
      if (err) throw err
    
      console.log('已成功创建文件夹!')
    });
    🎜Der obige Code erstellt eine Datei mit dem Namen content.txt und fügte den Text <code>Alle Arbeit und kein Spiel macht Jack zu einem langweiligen Jungen! als Inhalt hinzu. Wenn Fehler vorliegen, gibt die Rückruffunktion diesen Fehler aus. Andernfalls wird auf der Konsole ausgegeben, dass die Datei erfolgreich erstellt wurde. 🎜🎜writeFile Es gibt noch andere Varianten, wie zum Beispiel: 🎜
    • fs.writeFileSync – Dateien synchron schreiben 🎜
    • fsPromises.writeFile – Mit Promise-basierter API in Dateien schreiben 🎜🎜🎜🎜 Schauen Sie sich diesen Kern an: https://gist.github.com/catalinpit/571ba06c06214b5c8744036c6500af92🎜<h2 data-id="heading-3">Aus Datei lesen</h2>🎜Bevor Sie eine Datei lesen, müssen Sie den Pfad zur Datei erstellen und speichern. <code>path Der Pfad zum Modul ist hier praktisch. 🎜🎜Mit der Methode path im Modul join können Sie einen Dateipfad wie folgt erstellen: 🎜
      fs.rmdir(`${process.cwd()}/myFolder/`, { recursive: true }, err => {
        if (err) throw err
      
        console.log(&#39;已成功删除文件夹!&#39;)
      })
      🎜Erster Parameter process.cwd() Gibt das aktuelle Arbeitsverzeichnis zurück. Nachdem Sie nun den Dateipfad kennen, können Sie den Inhalt der Datei lesen. 🎜🎜Schreiben Sie den folgenden Code in die Datei: 🎜<pre class="brush:js;toolbar:false;">fs.rmdir(`${process.cwd()}/myFolder/`, err =&gt; { if (err) throw err console.log(&amp;#39;已成功删除文件夹!&amp;#39;) })</pre>🎜 Die <code>readFile-Methode akzeptiert mindestens zwei Parameter: 🎜
      • Der Pfad zur Datei 🎜
      • Callback 🎜🎜🎜If Wenn ein Fehler vorliegt, wird ein Fehler ausgegeben. Andernfalls wird der Dateiinhalt im Terminal gedruckt. 🎜🎜readFile Es gibt noch andere Varianten, wie zum Beispiel: 🎜
        • fs.readFileSync – Dateien synchron schreiben 🎜
        • fsPromises.readFile – Mit der Promise-basierten API in Dateien schreiben 🎜🎜🎜🎜 Schauen Sie sich diesen Kern an: https://gist.github.com/catalinpit/badc2a539a44412892a0e05a9575d54d🎜<h2 data-id="heading-4">读取目录的内容</h2> <p>在目录中显示文件与读取文件内容非常相似。但是,不是传递文件路径,而是传递当前工作目录(我们可以传递任何其他目录)。</p> <p>然后,传递一个回调函数来处理响应。在文件中编写以下代码:</p><pre class="brush:js;toolbar:false;">fs.readdir(process.cwd(), (error, files) =&gt; { if (error) throw error console.log(files) })</pre><p>到目前为止,我们只使用 <code>process.stdout.write 将内容输出到终端。但是,您可以简单地使用 console.log,就像上面的代码片段一样。

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

          查看此要点:https://gist.github.com/catalinpit/f82c4e6ae3acd5d97efdecb0bc67979e

          删除文件

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

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

          fs.unlink(filePath, error => {
            if (error) throw error
          
            console.log(&#39;文件已删除!&#39;)
          })

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

          查看此要点:https://gist.github.com/catalinpit/b1201434218c400f77e042109bfce99e

          创建目录

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

          fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) => {
            if (err) throw err
          
            console.log(&#39;已成功创建文件夹!&#39;)
          })

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

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

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

          但是,如果您只想创建一个文件夹,则无需将 recursive 选项设置为 true

          以下代码可以正常工作!

          fs.mkdir(`${process.cwd()}/myFolder`, err => {
            if (err) throw err
          
            console.log(&#39;已成功创建文件夹!&#39;)
          });

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

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

          查看此要点:https://gist.github.com/catalinpit/09bad802541102c0cce2a2e4c3985066

          删除目录

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

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

          fs.rmdir(`${process.cwd()}/myFolder/`, { recursive: true }, err => {
            if (err) throw err
          
            console.log(&#39;已成功删除文件夹!&#39;)
          })

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

          • 要删除的目录
          • 递归属性
          • 回调

          如果将 recursive 属性设置为 true,它将删除文件夹及其内容。请务必注意,如果文件夹中包含内容,则需要将其设置为 true。否则,您将得到一个错误。

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

          fs.rmdir(`${process.cwd()}/myFolder/`, err => {
            if (err) throw err
          
            console.log(&#39;已成功删除文件夹!&#39;)
          })

          如果 myFolder 中有其他文件和/或文件夹,如果未传递 { recursive: true },则会出现错误。

          知道何时使用 recursive 选项以及何时不避免问题是很重要的。

          查看此要点:https://gist.github.com/catalinpit/a8cb6aca75cef8d6ac5043eae9ba22ce

          目录/文件重命名

          使用 fs 模块,您可以重命名目录和文件。下面的代码片段显示了如何使用 rename 方法进行此操作。

          // 重命名一个目录fs.rename(`${process.cwd()}/myFolder/secondFolder`, `${process.cwd()}/myFolder/newFolder`, err => {
            if (err) throw err
          
            console.log(&#39;目录重命名!&#39;)
          });// 重命名一个文件fs.rename(`${process.cwd()}/content.txt`, `${process.cwd()}/newFile.txt`, err => {
            if (err) throw err
          
            console.log(&#39;文件重命名!&#39;)
          });

          rename 方法包含三个参数:

          • 第一个参数是现有的文件夹/文件
          • 第二个参数是新名称
          • 回调

          因此,要重命名文件或目录,我们需要传递当前文件/目录的名称和新名称。运行应用程序后,应更新目录/文件的名称。

          需要注意的是,如果新路径已经存在(例如,文件/文件夹的新名称),它将被覆盖。因此,请确保不要错误地覆盖现有文件/文件夹。

          查看此要点:https://gist.github.com/catalinpit/5c3e7c6ae39d09996ff67175a719122e

          向文件中添加内容

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

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

          fs.appendFile(filePath, &#39;\nAll work and no play makes Jack a dull boy!&#39;, err => {
            if (err) throw err
            
            console.log(&#39;All work and no play makes Jack a dull boy!&#39;)
          })

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

          查看此要点:https://gist.github.com/catalinpit/7c8d40db53dea9e6831f9ee89d92475c

          原文地址:https://juejin.cn/post/6991848361527607327

          作者:lio_zero

          更多编程相关知识,请访问:编程视频!!

Das obige ist der detaillierte Inhalt vonWie verwendet Node.js das Dateisystemmodul? Einführung in häufig verwendete FS-Modulmethoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen