Nodejs ファイル操作とストリーム (ストリーム) について簡単に紹介します。
この記事では、Nodejs でのファイル操作 (ディレクトリ/ファイルの作成と削除、名前変更、コンテンツの追加、コンテンツの読み取り) を紹介し、ストリームについて簡単に説明します。
NodeJS ファイル操作
-
NodeJS
インターネット上で明るく輝くだけでなく、論理的に言えば、これらのapi
を合理的に使用し、データ処理を追加する限り、多くのローカル操作を完了できます。 [推奨学習: "nodejs チュートリアル "] - 前の記事 で、モジュールを参照したい場合は require を使用する必要があることがわかりました。
, 今日紹介したい主役は
fsモジュールです。これは
NodeJSに組み込まれたファイル モジュールです。このモジュールには多くの
APIが含まれています使用します。
ディレクトリとファイルの作成
- fs.mkdir
を使用して、ディレクトリとファイルを別々に作成します。
- mkdir()
は 3 つのパラメータを受け取ることができます。1 つ目はパス、2 つ目はアクセス許可を表すオプションのオプションです。通常はこれは必要ありません。3 つ目のパラメータはコールバック関数です。ここで何らかの処理を行うことができます。
/* learnNode.js */ let fs = require('fs'); fs.mkdir('js',(err)=>{ if(err){ console.log('出错') }else{ console.log('未出错') } })
- writeFile()
は 4 つのパラメータを受け取ることができます。1 つ目はパス、2 つ目はファイルの内容、3 つ目のオプションはアクセス許可を表し、3 つ目は 4 つですはコールバック関数です。
/* learnNode.js */ let fs = require('fs'); fs.writeFile('./js/newJs.js','console.log("写入这个")',(err)=>{ if(err){ console.log('出错') }else{ console.log('没出错') } })
- ディレクトリが正常に作成され、ファイルが書き込まれたことがわかります。
ファイルの検出
- fs.stat
を使用して、パス内のファイルがディレクトリであるか、それともディレクトリであるかを検出できます。ファイルを作成すると、いくつかの操作を行うことができます。
/* learnNode.js */ let fs = require('fs'); fs.stat('./js/newJs.js', (error, stats) => { if(error) { console.log(error); return false; } else { console.log(`是否文件:${stats.isFile()}`); console.log(`是否目录:${stats.isDirectory()}`); return false; } })
- star() は主に 2 つのパラメータを受け取ります。1 つ目は検出するファイルで、2 つ目はコールバック関数です。このコールバック関数には 2 つのパラメータがあります。
- Error オブジェクトと
stats
オブジェクト。このオブジェクトはファイルに関する情報を提供します。このオブジェクトの情報を判断できます。
これで、
- NodeJS## を使用して作成できるようになりました。 # もちろん、主に 2 つの
- API
fs.unlink``fs.rmdir
を使用して、ファイルを削除することもできます。
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>/* learnNode.js */ let fs = require(&#39;fs&#39;); fs.unlink(&#39;./js/newJs.js&#39;, (err) => { if (err) throw err; console.log(&#39;文件已删除&#39;); }); fs.rmdir(&#39;./js&#39;,(err)=>{ if (err) throw err; console.log(&#39;目录已删除&#39;); })</pre><div class="contentsignin">ログイン後にコピー</div></div>
これら 2 つの
- は両方とも、パスとコールバック関数の 2 つのパラメータをそれぞれ受け取ります。
- node learnNode.js# を実行すると確認できます。 ## ファイルは正常に削除されました。
名前の変更
fs.rename
を使用してファイルの名前を変更できます。名前を変更します。/* learnNode.js */ let fs = require('fs'); fs.rename('oldJs.js','newJs.js',(err)=>{ if(err){ console.log('出错') }else{ console.log('未出错') } })
ログイン後にコピーrename()
/* learnNode.js */ let fs = require('fs'); fs.rename('newJs.js','./js/oldJs.js',(err)=>{ if(err){ console.log('出错') }else{ console.log('剪切到js文件夹内了') } })
ログイン後にコピーコンテンツの追加
ファイルの作成時に何かを書き込むことができると上で述べましたが、ファイルにテキストを直接追加できますか?毛織物? fs.appendFile
を使用できます。/* learnNode.js */ let fs = require('fs'); fs.appendFile('newJs.txt','我是追加的内容',(err)=>{ if(err){ console.log('出错') }else{ console.log('追加内容') } })
ログイン後にコピーappendFile()
- node learnNode.js
- 以上です。
上記は、ファイルの追加、削除、変更の操作です。 . 、今度はコンテンツの読み取りもマスターする必要があります。fs.readFile と
fs.readdir- を使用して、それぞれファイルとディレクトリを読み取ることができます。
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>/* learnNode.js */ let fs = require(&#39;fs&#39;); fs.readFile(&#39;newJs.txt&#39;, (err, data) => { if(err) { console.log(&#39;出错&#39;); } else { console.log("读取文件成功!"); console.log(data); } })</pre><div class="contentsignin">ログイン後にコピー</div></div>
/* learnNode.js */ let fs = require('fs'); fs.readdir('./', (err, data) => { if(err) { console.log('出错'); } else { console.log("读取目录成功!"); console.log(data); } })
ログイン後にコピー
- 可以看到我们两个
API
都是接收两个参数,第一个是路径,第二个是回调函数,这个回调函数也有两个参数里面包含了data
信息,我们可以打印这个data
信息来获取内容。
stream(流)
- 最后我们来简单聊聊
stream
,翻译过来就是流
的意思,提到流你会想到什么,河流,水流,都是从一个源头到另一个源头,就像水龙头从开关到流到地面,stream
也是这样一个过程。 - Stream 有四种流类型:
- Readable - 可读操作。
- Writable - 可写操作。
- Duplex - 可读可写操作.
- Transform - 操作被写入数据,然后读出结果。
- 在stream的过程中,我们也有事件可以使用,比如检测到错误触发的
error
,有数据时触发的data
。- data - 当有数据可读时触发。
- end - 没有更多的数据可读时触发。
- error - 在接收和写入过程中发生错误时触发。
- finish - 所有数据已被写入到底层系统时触发。
- 接下来简单举个例子理解一下吧。
读取流
var fs = require("fs"); var data = ''; // 创建可读流 var readerStream = fs.createReadStream('newJs.txt'); // 设置编码为 utf8。 readerStream.setEncoding('UTF8'); // 处理流事件 遇到有数据时执行这个 readerStream.on('data', function(chunk) { data += chunk; console.log(chunk,'流遇到数据了') }); // 处理流事件 流结束时执行这个 readerStream.on('end',function(){ console.log(data,'流结束了'); }); // 处理流事件 流报错时执行这个 readerStream.on('error', function(err){ console.log(err.stack); }); console.log("程序执行完毕");
- 我们一开始可以创建一个可读流
fs.createReadStream()
,参数是你要读的文件路径。 - 当遇到了数据时会执行
readerStream.on('data',callback())
,如下图所示。 - 当流结束时会执行
readerStream.on('end',callback())
,如下图所示。
写入流
- 我们上面演示了如何通过流读取一个文件,接下来我们试试通过流写入文件。
var fs = require("fs"); var data = '我是小卢,我再写入流'; // 创建一个可以写入的流,写入到文件 newJs.txt 中 var writerStream = fs.createWriteStream('newJs.txt'); // 使用 utf8 编码写入数据 writerStream.write(data,'UTF8'); // 标记文件末尾 writerStream.end(); // 处理流事件 完成和报错时执行 writerStream.on('finish', function() { console.log("写入完毕"); }); writerStream.on('error', function(err){ console.log(err.stack); }); console.log("程序执行完毕");
- 我们首先创建一个流,然后将
data
数据写入newJs.txt
文件中。 - 当流写入完毕时会执行
readerStream.on('finish',callback())
,如下图所示。
- 可以看到该
newJs.txt
文件中已经存在了我们写入的数据。
写在最后
总的来说NodeJS
提供了fs
文件操作模块,这个模块有很多的API
,上面只是简单的展示了一下,还有很多有趣的API
大家只需要用到的时候去官网查就好了,因为NodeJS
能操作文件,小至文件查找,大至代码编译。换个角度讲,几乎也只需要一些数据处理逻辑,再加上一些文件操作,就能够编写出大多数前端工具。
原文地址:https://juejin.cn/post/6997204352683212831
作者:快跑啊小卢_
更多编程相关知识,请访问:编程视频!!
以上がNodejs ファイル操作とストリーム (ストリーム) について簡単に紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











Go ではファイルを安全に読み書きすることが重要です。ガイドラインには以下が含まれます。 ファイル権限の確認 遅延を使用してファイルを閉じる ファイル パスの検証 コンテキスト タイムアウトの使用 これらのガイドラインに従うことで、データのセキュリティとアプリケーションの堅牢性が確保されます。

Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

MySQL データベースに接続するには、次の手順に従う必要があります。 mysql2 ドライバーをインストールします。 mysql2.createConnection() を使用して、ホスト アドレス、ポート、ユーザー名、パスワード、データベース名を含む接続オブジェクトを作成します。 connection.query() を使用してクエリを実行します。最後に connection.end() を使用して接続を終了します。

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

はい、Node.js はフロントエンド開発に使用でき、主な利点には、高性能、豊富なエコシステム、クロスプラットフォーム互換性が含まれます。考慮すべき点は、学習曲線、ツールのサポート、コミュニティの規模の小ささです。
