ノードの fs モジュールとは何ですか
nodeにおいて、fsモジュールとはファイルを操作するためのモジュールである「ファイルシステムモジュール」を指します。 fs モジュールのほとんどの API は 3 つの操作方法を提供します: 1. 同期ファイル操作: コードはブロックされ、実行を継続しません; 2. 非同期コールバック関数操作ファイル: コードはブロックされず、コールバック関数を実行する必要があります。結果が生成されると、コールバック関数が実行されます; 3. 非同期 Promise オペレーション ファイル: コードはブロックされず、fs.promises を通じてメソッド オペレーションを呼び出すことによって Promise が返されます。
このチュートリアルの動作環境: Windows 7 システム、nodejs バージョン 16、DELL G3 コンピューター。
ファイル システム モジュール (略して fs) を使用すると、コンピュータ上のファイル システムにアクセスして対話することができます。
fsモジュールはNode.jsが公式に提供しているファイル操作用のモジュールです。ユーザーのファイル操作のニーズを満たす一連のメソッドとプロパティを提供します。
fs.readFile() メソッド。指定されたファイルの内容を読み取るために使用されます。
fs.writeFile() メソッド。If に使用されます。 JavaScript コードで指定したファイルにコンテンツを書き込みたい場合
fs の使用方法
ファイル システム モジュールはコア Node.js ですモジュール。つまり、インストールする必要はありません。必要なのは、fs モジュールを独自のファイルにインポートすることだけです。
したがって、ファイルの先頭に次のように追加します:
const fs = require('fs')
これで、接頭辞 fs を使用してファイル システム モジュールから任意のメソッドを呼び出すことができます。
あるいは、次のように fs API から必要なメソッドをインポートすることもできます:
const { writeFile, readFile } = require('fs')
注: 便宜上、パス モジュールもインポートする必要があります。これは、ファイルとディレクトリのパスを操作できるようにするもう 1 つのコア Node.js モジュールです。
fs モジュールをインポートした後、次のファイルを追加します。
const path = require('path')
ファイル システム モジュールを使用する場合、パス モジュールは必要ありません。しかし、それは私たちにとってとても役に立ちます!
同期と非同期
fs モジュールのファイル操作は通常、同期 API と非同期 API の両方をサポートしており、非同期にはコールバック関数と Promsie フォームも含まれます。通常、同期の後には sync という単語が続きます。
fs モジュールの API のほとんどは、次の 3 つの操作メソッドを提供します。
ファイルの同期操作: コードはブロックされ、実行を継続しません。
- 非同期コールバック関数操作ファイル: コードはブロックされません。コールバック関数を渡す必要があります。結果が取得されると、コールバック関数が実行されます。
- 非同期 Promise オペレーション ファイル: コードはブロックされません。fs.promises を通じてメソッド オペレーションを呼び出すと Promise が返され、then および catch を通じて処理できます。
writeFile メソッドを使用します。
writeFile このメソッドは少なくとも次のパラメータを受け入れます:
- ファイル名コンテンツコールバック
fs および
path モジュールをインポートした後、ファイルに次のコードを記述します。
fs.writeFile('content.txt', 'All work and no play makes Jack a dull boy!', err => { if (err) throw err process.stdout.write('创建成功!') })
の新しいファイルに、コンテンツとして All work and no play makes Jack a鈍感な少年!
というテキストを追加しました。エラーがある場合、コールバック関数はそのエラーをスローします。それ以外の場合は、ファイルが正常に作成されたことがコンソールに出力されます。
他にも次のようなバリエーションがあります。
- fs.writeFileSync
- — ファイルを同期的に書き込みます
- — Promise ベースの API を使用してファイルを書き込みます
ファイルからの読み取り
ファイルを読み取る前に、ファイルへのパスを作成して保存する必要があります。
path ここでモジュールのパスを指定すると便利です。 join
モジュールの
メソッドを使用すると、次のようなファイル パスを作成できます: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>const filePath = path.join(process.cwd(), &#39;content.txt&#39;)</pre><div class="contentsignin">ログイン後にコピー</div></div>
最初のパラメータプロセス。 cwd()
現在の作業ディレクトリを返します。ファイル パスがわかったので、ファイルの内容を読み取ることができます。
次のコードをファイルに記述します: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>fs.readFile(filePath, (error, content) => {
if (error) throw error
process.stdout.write(content)
})</pre><div class="contentsignin">ログイン後にコピー</div></div>
このメソッドは少なくとも 2 つのパラメーターを受け入れます:
- 文件的路径
- 回调
如果有错误,它会抛出一个错误。否则,它会在终端中输出文件内容。
readFile
还有其他变体,例如:
fs.readFileSync
— 同步写入文件fsPromises.readFile
— 使用基于 Promise 的 API 写入文件
查看此要点:https://gist.github.com/catalinpit/badc2a539a44412892a0e05a9575d54d
读取目录的内容
在目录中显示文件与读取文件内容非常相似。但是,不是传递文件路径,而是传递当前工作目录(我们可以传递任何其他目录)。
然后,传递一个回调函数来处理响应。在文件中编写以下代码:
fs.readdir(process.cwd(), (error, files) => { if (error) throw error console.log(files) })
到目前为止,我们只使用 process.stdout.write
将内容输出到终端。但是,您可以简单地使用 console.log
,就像上面的代码片段一样。
如果运行该应用程序,我们应该会得到一个包含目录中所有文件的数组。
查看此要点:https://gist.github.com/catalinpit/f82c4e6ae3acd5d97efdecb0bc67979e
删除文件
文件系统模块有一种方法,允许您删除文件。但是,需要注意的是,它只适用于文件,不适用于目录。
当以文件路径作为参数调用 unlink
方法时,它将删除该文件。将以下代码段添加到文件中:
fs.unlink(filePath, error => { if (error) throw error console.log('文件已删除!') })
如果您重新运行代码,您的文件将被删除!
查看此要点:https://gist.github.com/catalinpit/b1201434218c400f77e042109bfce99e
创建目录
我们可以使用 mkdir
方法异步创建目录。在文件中编写以下代码:
fs.mkdir(`${process.cwd()}/myFolder/secondFolder`, { recursive: true }, (err) => { if (err) throw err console.log('已成功创建文件夹!') })
首先,要在当前工作目录中创建一个新文件夹。如前所述,您可以使用 cwd()
方法从 process
对象获取当前工作目录。
然后,传递要创建的一个或多个文件夹。但是,这并不意味着您必须在当前工作目录中创建新文件夹。你可以在任何地方创建它们。
现在,第二个参数是递归选项。如果未将其设置为 true
,则无法创建多个文件夹。如果将 recursive
选项设置为 false
,上述代码将给出一个错误。试试看!
但是,如果您只想创建一个文件夹,则无需将 recursive
选项设置为 true
。
以下代码可以正常工作!
fs.mkdir(`${process.cwd()}/myFolder`, err => { if (err) throw err console.log('已成功创建文件夹!') });
因此,我想强调使用 recursive
。如果要在文件夹中创建文件夹,则需要将其设置为 true
。它将创建所有文件夹,即使它们不存在。
另一方面,如果您只想创建一个文件夹,可以将其保留为 false
。
查看此要点:https://gist.github.com/catalinpit/09bad802541102c0cce2a2e4c3985066
删除目录
删除目录的逻辑类似于创建目录。如果您查看为创建目录而编写的代码和下面的代码,您会发现相似之处。
因此,在文件中编写以下代码:
fs.rmdir(`${process.cwd()}/myFolder/`, { recursive: true }, err => { if (err) throw err console.log('已成功删除文件夹!') })
使用文件系统模块中的 rmdir
方法,并传递以下参数:
- 要删除的目录
- 递归属性
- 回调
如果将 recursive
属性设置为 true
,它将删除文件夹及其内容。请务必注意,如果文件夹中包含内容,则需要将其设置为 true
。否则,您将得到一个错误。
以下代码段仅在文件夹为空时有效:
fs.rmdir(`${process.cwd()}/myFolder/`, err => { if (err) throw err console.log('已成功删除文件夹!') })
如果 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('目录重命名!') });// 重命名一个文件fs.rename(`${process.cwd()}/content.txt`, `${process.cwd()}/newFile.txt`, err => { if (err) throw err console.log('文件重命名!') });
rename
方法包含三个参数:
- 第一个参数是现有的文件夹/文件
- 第二个参数是新名称
- 回调
因此,要重命名文件或目录,我们需要传递当前文件/目录的名称和新名称。运行应用程序后,应更新目录/文件的名称。
需要注意的是,如果新路径已经存在(例如,文件/文件夹的新名称),它将被覆盖。因此,请确保不要错误地覆盖现有文件/文件夹。
查看此要点:https://gist.github.com/catalinpit/5c3e7c6ae39d09996ff67175a719122e
向文件中添加内容
我们还可以使用 appendFile
方法向现有文件添加新内容。
如果比较 writeFile
和 appendFile
这两种方法,我们可以发现它们是相似的。传递文件路径、内容和回调。
fs.appendFile(filePath, '\nAll work and no play makes Jack a dull boy!', err => { if (err) throw err console.log('All work and no play makes Jack a dull boy!') })
上面的代码片段演示了如何向现有文件添加新内容。如果运行应用程序并打开文件,您应该会看到其中的新内容。
更多node相关知识,请访问:nodejs 教程!
以上がノードの fs モジュールとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

ファイルのアップロードをどのように処理するか?次の記事では、Express を使用してノード プロジェクトでファイルのアップロードを処理する方法を紹介します。

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

この記事では、Node のプロセス管理ツール「pm2」について説明し、pm2 が必要な理由、pm2 のインストール方法と使用方法について説明します。皆様のお役に立てれば幸いです。

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。
