ノードファイルシステム: fs 非同期および同期 (ファイルの読み取りおよび書き込み)

藏色散人
リリース: 2022-08-08 15:12:21
転載
3776 人が閲覧しました

同期と非同期

fsにSyncが付いているものは同期、付いていないものは非同期です

まず同期と非同期を区別しましょう

#同期: 前のコードが最初に実行され、次のコードは、前のコードが実行されるまで待機してから実行されます。

非同期: コードは特定の順序で実行されません。前のコードを実行しても後続のコードがブロックされることはないため、非同期コードの実行結果の順序は不確かです

fs でファイルを操作するには、非同期と同期の 2 つの方法があります。通常の非同期と Promise 非同期に変換します。詳細についてはコードを参照してください。

オプションのフラグの値と意味

r: 读取文件,文件不存在则报错
r+:读取并写入文件,如果文件不存在则报错
rs:以同步的方式读取文件并通知操作系忽略本地文件系统缓存。(一般不用)
w:写入文件。如果文件不存在则创建该文件,如果文件存在则覆盖
wx:作用和w类似,如果路径已存在则失败。
w+:读取并写入文件。如果文件不存在则创建该文件,如果文件存在则覆盖
wx+:和w+类型,如果路径已存在则失败。
a:追加写入文件,如果文件不存在则创建文件
ax:作用和a类型,如果路径已存在则失败。
a+: 读取并追加写入文件,如果文件不存在则创建文件
ax+:作用和a+类似,如果路径已存在则失败。
ログイン後にコピー
使用前にモジュールをインポートします

let fs=require('fs');
ログイン後にコピー

1. ファイルを読み取ります

#1 .readFileSync(path[, options]) ファイルを同期的に読み取ります

path: ファイル パス

options: ファイル読み取りオプションの構成に使用されるオプションのパラメーターは同じです

//  同步读取 需要使用一个变量来接收读取出来的数据
let data=fs.readFileSync(path,{  // path为文件的路径
		encoding:'utf8',  // 指定字符集
		flag:'r'		  // 指定读取的模式  具体上面有
});	
console.log(data.toString());   // 默认读出来的是buffer类型 使用toString()转为字符串
ログイン後にコピー

2. readFile(path,[,options],callback(error,data)) 通常、ファイルは非同期で読み取ります

// 普通异步读取不需要变量 直接在回调函数中读取数据  需要注意的是:
// 回调函数接收两个参数 第一个是error 也就是异常 说明文件读取失败 如果error为null 则读取成功 data即数据
fs.readFile(path,{encoding:'utf8',flag:'r'},function(error,data){
    console.log(data.toString())
});
ログイン後にコピー

3. fs.promises.readFile (path[, options]) Promise モードでファイルを読み取ります

	// fs.promises.xxx 返回的是一个promise的对象 需要学习promise的语法 then()接收一个参数data 即数据
fs.promises.readFile(path).then(data=>{
   	console.log(data.toString());
})
// 或
let fsPromise=fs.promises.readFile(path);
fsPromise.then(data=>{
	console.log(data.toString());
})
ログイン後にコピー

2. ファイルを書き込みます

appendFile の効果は、writeFile

の flag:'a ' と同じです

path: ファイル パス データは、上記の

1 の書き込みデータ オプションです。 fs.writeFileSync(file, data[ , options]) ファイルを同期的に書き込みます

// data为需要写入的数据 options同上 写入的方式 a+为追加写入方式
fs.writeFileSync(path,data,{flag:'a+'}); // 返回值为undefined
ログイン後にコピー

2. fs.appendFileSync(file, data[, options]) ファイルを書き込むための同期追加モード

fs.appendFileSync(path,data,{});  // 返回值为undefined
ログイン後にコピー

3. fs.writeFile(file, data[, options],callback) 通常の非同期書き込み

fs.writeFile(path,data,{flag:'a+'},function(error){
	if(err){
		console.log("写入失败");
	}else{
		console.log("写入成功");
	}})
ログイン後にコピー

4. fs.promises.writeFile(file, data[, options]) Promise を非同期で書き込みます

fs.promises.writeFile(path,data,{flag:'a+'});  // 写入操作 没有返回值 也就不需要then了
ログイン後にコピー

5. fs.appendFile (path, data[, options], callback) 非同期追加はファイル

fs.appendFile(path,appendData,function(){		})
ログイン後にコピー

6 に書き込まれます。 fs.promises.appendFile(path, data[, options]) 書き込まれたファイルを追加するための Promise メソッド

fs.promises.writeFile(path,data);
ログイン後にコピー

[推奨: node.js ビデオ チュートリアル ]

以上がノードファイルシステム: fs 非同期および同期 (ファイルの読み取りおよび書き込み)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート