概要Node の fs ドキュメントには多くの API が含まれており、ファイル システム操作を完全にサポートしています。ドキュメントはよく整理されており、操作は基本的にファイル操作、ディレクトリ操作、ファイル情報、ストリームに分かれています。プログラミング方法は同期、非同期、Promiseもサポートしています。 この記事では、ドキュメントで詳細に説明されていないいくつかの問題を記録し、fs ドキュメントのアイデアをよりよく結び付けることができます。
ファイル記述子ファイル記述子は負でない整数です。これは、オペレーティング システムが対応するファイルを見つけるために使用できるインデックス値です。 fs の多くの低レベル API では、ファイル記述子が必要です。ドキュメントでは、記述子は通常 fd で表されます。たとえば、fs.read(fd, buffer, offset, length, position, callback) です。対応する API は、fs.readFile(path[, options], callback) です。 オペレーティング システムにはファイル記述子の数に制限があるため、ファイル操作が完了したらファイルを閉じることを忘れないでください。 定数 fs = require("fs"); fs.open("./db.json", "r", (err, fd) => { (err) の場合、err をスローします。 // ファイル操作... // 操作が完了したら、ファイルを閉じます fs.close(fd, err => { (err) の場合、err をスローします。 }); }); 同期、非同期、Promiseすべてのファイル システム API には、同期形式と非同期形式の両方があります。 同期書き込み同期 API はスレッドをブロックするため、使用はお勧めしません。 試す { const buf = fs.readFileSync("./package.json"); console.log(buf.toString("utf8")); } キャッチ(エラー){ console.log(エラーメッセージ); } 非同期書き込み非同期書き込みでは、コールバック地獄に陥りやすくなります。 fs.readFile("./package.json", (err, データ) => { (err) の場合、err をスローします。 コンソールにログ出力します。 }); (推奨)約束事の書き方Node v12 より前では、Promise カプセル化を自分で使用する必要があります。 関数 readFilePromise(パス、エンコーディング = "utf8") { const promise = new Promise((resolve, deny) => { fs.readFile(パス、(エラー、データ) => { (err) の場合は、reject(err) を返します。 解決を返します(data.toString(encoding)); }); }); 返却約束; } readFilePromise("./package.json").then(res => console.log(res)); Node v12 では、fs Promise API が導入されました。コールバックを使用する代わりに、Promise オブジェクトを返します。 API は require('fs').promises を介してアクセスできます。これにより開発コストが削減されます。 const fsPromises = require("fs").promises; fsPromises .readFile("./package.json", { エンコーディング: "utf8", フラグ: "r" }) .then(コンソール.log) .catch(コンソール.エラー); カタログとカタログ項目fs.Dirクラス: ファイルディレクトリに関連する操作をカプセル化します fs.Dirent クラス: ディレクトリ エントリに関連する操作をカプセル化します。たとえば、デバイス タイプ (文字、ブロック、FIFO など) を決定します。 それらの関係はコードで示されています: const fsPromises = require("fs").promises; 非同期関数main() { const dir = fsPromises.opendir(".") を待機します。 dirent = null とします。 ((dirent = await dir.read()) !== null) の間 { console.log(dirent.name); } } 主要(); ファイル情報fs.Stats クラス: ファイル情報に関連する操作をカプセル化します。これは fs.stat() コールバック関数で返されます。 fs.stat("./package.json", (err, 統計) => { (err) の場合、err をスローします。 console.log(統計); }); ファイルが存在するかどうかを確認する際の注意:
ReadStream と WriteStreamNode.js では、stream は非常に重要なライブラリです。多くのライブラリの API はストリームに基づいてカプセル化されています。たとえば、以下で説明する fs の ReadStream と WriteStream などです。 fs 自体は readFile と writeFile を提供しますが、その有用性の代償として、すべてのコンテンツが一度にメモリにロードされるため、パフォーマンスの問題が発生します。しかし、数 GB の大きなファイルの場合、明らかに問題が発生します。 したがって、大きなファイルに対する解決策は当然、ファイルを少しずつ読み取ることです。これにはストリームの使用が必要です。 readStream を例にとると、コードは次のようになります。 const rs = fs.createReadStream("./package.json"); コンテンツ = "" とします。 rs.on("開く", () => { console.log("読み始める"); }); rs.on("データ", チャンク => { コンテンツ += chunk.toString("utf8"); }); rs.on("閉じる", () => { console.log("読み取り完了、コンテンツは:\n", content); }); ストリーム パイプの助けを借りて、大きなファイルのコピー関数を 1 行に素早くカプセル化できます。 関数 copyBigFile(src, target) { fs.createReadStream(src).pipe(fs.createWriteStream(target)); } 以上がNodejsでモジュールfsファイルシステムを使用する方法の詳細です。Nodejsの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: C# は MySQL コマンドラインのバックアップとリカバリを実装します
>>: LinuxシステムのAnsible自動運用保守導入方法
MySQL スロー クエリ (正式名称はスロー クエリ ログ) は、MySQL によって提供されるロ...
目次関数フォーマットを即時実行関数を即座に実行する他の方法 – 式即時実行される関数はパラメータを取...
では、早速リソースについて見ていきましょう。 123WORDPRESS.COM ダウンロードSQLy...
目次MySQLがmy.cnfを読み込む順序1. mysql.server の起動方法2. mysql...
NFS とは何ですか?ネットワークファイルシステムネットワーク上でファイルを保存および整理するための...
目次1. カスタム指示1. グローバルカスタム指示を登録する2. グローバルカスタム指示を使用する3...
目次製品要件アイデア問題ライブラリ選択をドラッグコンポーネントを生成する方法コンポーネントを生成する...
私は現在、Xiao Nian Gao に似たビデオおよびツール アプリを開発しています。ユーザーが作...
1. モジュールをインポートし、検証状態を定義する PIL から Image、ImageDraw、...
CentOS7 64でのMySQL5.6.40のインストール手順1) 以前にインストールしたMySQ...
ハイパーリンクの下線を削除するには、スタイルシート CSS を使用する必要があります。当面は CSS...
目次ファーストルックインデックスインデックスの概念インデックスファイルの構成インデックスの役割SQL...
この記事では、マウスを動かしたときにセカンダリ メニュー バーを実装するために HTML+CSS を...
目次sakilaをインストールするインデックススキャンソートテーブル構造インデックススキャンをソート...
MySQL データベースがエラー 1045 (28000): ユーザー 'ODBC'...