首頁  >  文章  >  web前端  >  Node檔案系統:fs非同步與同步(檔案讀寫)

Node檔案系統:fs非同步與同步(檔案讀寫)

藏色散人
藏色散人轉載
2022-08-08 15:11:033708瀏覽

同步與非同步

fs中帶Sync的就是同步方式不帶的就是非同步

在這先對同步與非同步進行區別

同步:前面的程式碼先執行後面的程式碼需要等待前面的程式碼執行完畢才會執行

非同步:程式碼的執行不分先後也就是說前面的程式碼執行不會導致後面的程式碼阻塞所以非同步程式碼的執行結果的順序是不一定的

在fs中對於檔案的操作有異步和同步兩種方式,異步中又分為普通非同步和Promise非同步兩種具體看代碼

options中的flag的取值及意義

r: 读取文件,文件不存在则报错
r+:读取并写入文件,如果文件不存在则报错
rs:以同步的方式读取文件并通知操作系忽略本地文件系统缓存。(一般不用)
w:写入文件。如果文件不存在则创建该文件,如果文件存在则覆盖
wx:作用和w类似,如果路径已存在则失败。
w+:读取并写入文件。如果文件不存在则创建该文件,如果文件存在则覆盖
wx+:和w+类型,如果路径已存在则失败。
a:追加写入文件,如果文件不存在则创建文件
ax:作用和a类型,如果路径已存在则失败。
a+: 读取并追加写入文件,如果文件不存在则创建文件
ax+:作用和a+类似,如果路径已存在则失败。

使用之前先導入模組

let fs=require('fs');

一.讀取檔案

1 .readFileSync(path[, options]) 同步讀取檔案

path: 檔案路徑

options:可選參數用來設定讀取檔案的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());
})

二. 寫入檔案

appendFile效果和writeFile中flag:'a '一樣

path:檔案路徑data為寫入的資料option同上

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("写入成功");
	}})

#

fs.promises.writeFile(path,data,{flag:'a+'});  // 写入操作 没有返回值 也就不需要then了
4. fs.promises.writeFile(file, data[, options]) promise非同步方式寫入

fs.appendFile(path,appendData,function(){		})
5. fs.appendFile(path, data[, options], callback) 非同步追加方式寫入檔案

fs.promises.writeFile(path,data);
6. fs.promises.appendFile(path, data[, options]) promise方式追加寫入檔案

rrreee【推薦:node.js影片教學

###

以上是Node檔案系統:fs非同步與同步(檔案讀寫)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除