日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Node.js 初识 fs 模块

發布時間:2024/4/17 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node.js 初识 fs 模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

fs 模塊是文件操作的封裝,它提供了文件的讀取、寫入、更名、刪除、遍歷目錄、鏈接等 Unix 文件系統操作。與其他模塊不同的是,fs 模塊中所有的操作都提供了 同步異步 兩個版本,比如讀取文件內容的函數有 異步的 fs.readFile() 和 同步的 fs.readFileSync().


Node.js 導入文件系統模塊的語法如下:

var?fs?=?require('fs');


1、異步和同步讀取文件


fs.readFile(file[, options], callback(err,data))

異步讀取文件的全部內容


參數:

file?<String>?|?<Buffer>?|?<Integer>,要讀取的文件名,必選參數 ? ? ??

options?<Object>?|?<String>, 可選參數,可指定 flag(文件操作選項,如 r+ 讀寫;w+讀寫,文 件不存在則創建)及 encoding 屬性

????????encoding: ?<String>?|?<Null>,表示文件的字符編碼

????????flag:?<String>? ,默認 'r'?

callback?<Function>,回調函數提供了兩個參數 err 和 data,err 表示有沒有錯誤發生,data 是文件內容


如果指定了第二個參數 encoding,回調函數中的 data 是一個解析后的字符串,否則 data 將會是以 Buffer 形式表示的二進制數據


新建一個 content.txt,里面添加一行簡單的文本

你好,世界!


異步讀取文件,示例代碼如下:

var?fs?=?require('fs');fs.readFile('./content.txt',?{flag:?'r+',?encoding:?'utf8'},?function(err,?data){if(err){console.error(err);return;}console.log('異步讀取:'+?data); });


運行結果如下:


當讀取文件出現錯誤時,err 將會是 Error 對象。例如:讀取一個不存在的 content1.txt 文件,運行代碼時,會報如下錯誤。


Node.js 的異步編程接口習慣是以函數的最后一個參數為回調函數,通常一個函數只有一個回調函數。回調函數的實際參數中第一個是 err,其余參數是其他返回內容。如果沒有發生錯誤,err 的值會是 null 或 undefined。如果有錯誤發生,err 通常是 Error 對象的實例



fs.readFileSync(file[, options])

?fs.readFile?的同步版本,返回文件的內容


它接受的參數和 fs.readFile 相同,而讀取到的文件內容會以函數返回值的形式返回。如果有錯誤發生,fs 將會拋出異常,需要使用 try 和 catch 捕捉并處理異常。


與同步 I/O 函數不同,Node.js 中異步函數大多沒有返回值


同步讀取文件示例:

var?fs?=?require('fs');//同步讀取 var?data?=?fs.readFileSync('./content.txt','utf8'); console.log('同步讀取:'+?data); console.log('程序執行完畢!');


運行結果:



2、獲取文件信息


fs.stat(path, callback)

通過異步模式獲取文件信息


參數:

path:?<String>?|?<Buffer>,文件的路徑

callback:?<Function>,回調函數,帶有兩個參數 err 和 status,stats 是 ?fs.Stats??對象


fs.stat() 執行后,會將 stats 類的實例返回給其回掉函數。可以通過 stats 類中提供的方法判斷文件的相關屬性,例如:判斷是否為文件夾

var?fs?=?require('fs');fs.stat('/Users/liuht/code/itbilu/demo/fs.js',?function?(err,?stats)?{console.log(stats.isFile());??????//true })


stats 類中的方法有:

新建一個 js 文件,代碼如下:

var?fs?=?require('fs');console.log('準備打開文件!');fs.stat('./content.txt',?function(err,?stats){if(err){console.err(error);}console.log(stats);console.log('讀取信息成功!');//檢測文件類型console.log('是否為文件(isFile)?'+?stats.isFile());console.log('是否為目錄(isDirectory)?'+?stats.isDirectory()); })


運行結果:



3、寫入文件


fs.writeFile(file, data[, options], callback)

異步的方式把數據寫入文件,如果文件存在,該方法寫入的內容會覆蓋舊的文件內容


參數:

file:??<String>?|?<Buffer>?|?<Integer>,要讀取的文件名,必選參數 ? ? ??

data:??<String>?|?<Buffer>?,要寫入的數據,可以是 ?<String>??也可以是??<Buffer>?(對象流)

options:??<Object>?|?<String>,?

????????encoding:??<String>?|?<Null>,表示文件的字符編碼,默認'utf8'

? ? ? ? mode:?<Integer>?,權限,默認?0o666?

????????flag:?<String>??,默認?'w'?

callback?<Function>,回調函數只包含錯誤信息參數(err),在寫入失敗時返回


如果 data?是一個?<Buffer>?,那么 option 中的 encoding?會被忽略掉,將默認為?'utf8'



示例代碼:

var?fs?=?require('fs');console.log('準備寫入文件!');fs.writeFile('./content.txt',?'我是異步寫入的文件內容',?function(err){if(err){console.err(error);}console.log('數據寫入成功!');console.log('--------------我是分割線---------------');console.log('讀取寫入的數據!');fs.readFile('./content.txt',?function(err,?data){if(err){console.err(error);}console.log('異步讀取文件數據:'?+data);}) })


運行結果:


同時,原來的 content.txt 中的內容變為:



fs.appendFile(file, data[, options], callback)

以追加的方式寫入文件


示例代碼:

var?fs?=?require('fs');fs.appendFile('./content.txt',?'我是被追加寫入的數據',?function(err){if(err){console.log(error);} });fs.readFile('./content.txt',?function(err,?data){if(err){console.log(error);}console.log('異步讀取文件數據:'?+data); })


運行結果:(在原數據后追加數據,不會覆蓋原內容)



4、讀取文件


fs.read(fd, buffer, offset, length, position, callback(err, bytesRead, buffer))

從指定的文件描述符 fd 中讀取數據并寫入 buffer 指向的緩沖區對象


參數:

fd?: ?<Integer>,使用 fs.open 打開成功后返回的文件描述符

buffer?:?<String>?|?<Buffer>?,一個 buffer 對象,V8引擎分配的一段內存

offset?:?<Integer>?,整數,向緩存區中寫入時的初識位置,以字節為單位

length?:?<Integer>?,整數,讀取文件的長度

position?:?<Integer>?,整數,讀取文件的初識位置;文件大小以字節為單位

如果 position??為 null,將從當前文件指針的位置讀取

callback?:?<Function>?,讀取執行完成后的回調函數,有三個參數?err, bytesRead, buffer

?????- err:錯誤信息

???? - bytesRead:表示讀取的字節數

???? - buffer:緩沖區對象


示例代碼如下:

var?fs?=?require('fs');var?buf?=?new?Buffer(1024);console.log('準備打開已存在的文件!'); fs.open('./content.txt',?'r+',?function(err,?fd){if(err){console.error(err);}console.log('文件打開成功!');console.log('準備讀取文件:');fs.read(fd,?buf,?0,?buf.length,?0,?function(err,?bytes){if(err){console.error(err);}//每一個漢字utf8編碼是3個字節console.log(bytes+?'字節被讀取');//僅輸出讀取的字節if(bytes?>0){console.log(buf.slice(0,?bytes));}}) });


運行結果:



5、打開文件


fs.open(path, flags[, mode], callback(err, fd))

異步的方式打開文件


path:?<String>?|?<Buffer>,文件的路徑

flags:?<String>?|?<Number>,文件打開的行為,具體參考下表

mode:?<Integer>,設置文件模式(權限),文件創建默認權限為 0666(可讀,可寫)

callback:?<Function>,回調函數,帶有兩個參數 err 和 fd


flags 參數可以是以下值:


示例代碼:以讀寫模式打開文件 content.txt

var?fs?=?require('fs');//異步打開文件 console.log('準備打開文件!'); fs.open('./content.txt','r+',function(err,?fd){if(err){return?console.error(err);}console.log('文件打開成功!'); });


運行結果:


fs.openSync(path, flags[, mode])

?fs.open()?的同步版本,返回一個??<Integer>?代表讀取的文件



6、創建目錄

fs.mkdir(path[, mode], callback(err))

創建目錄


參數:

path?<String>?|?<Buffer>?,被創建目錄的完整路徑及目錄名

[mode]?:?<Integer>?,整數,目錄權限,默認 0777

callback?:?<Function>?,創建完目錄回調函數,err 錯誤對象



示例代碼:

var?fs?=?require('fs');console.log('創建目錄?/src/test');fs.mkdir('src/test',?function(err){if(err){console.error(err);}console.log('目錄創建成功!'); });


創建前截圖:


創建后截圖:












轉載于:https://blog.51cto.com/dapengtalk/1890453

總結

以上是生活随笔為你收集整理的Node.js 初识 fs 模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲一区中文字幕在线观看 | 丝袜福利视频 | 热久久久久久久 | av在线不卡网站 | 欧洲三级视频 | 精品国产一区二区三区性色av | 日本免费黄色片 | 69xx欧美 | 天天色av | 久久久久不卡 | 国产精品一区二区三区免费观看 | 少妇一区二区三区四区 | www精品国产| 在线观看免费国产 | 黄色av导航 | 一区二区三区av | 国产wwwwww| 亚洲国产日韩a在线播放性色 | 亚洲欧美日韩久久 | 深夜视频在线播放 | 国产精品九九 | 人妻精油按摩bd高清中文字幕 | 777国产成人入口 | www.操| 欧美顶级毛片在线播放 | 99国产免费| 黄色片日韩 | 欧美精品在线观看视频 | 欧美乱论 | 成人福利在线视频 | 牛夜精品久久久久久久99黑人 | 欧美精品乱码视频一二专区 | 日本亚洲精品 | 久久人人爽天天玩人人妻精品 | 欧美在线一二三区 | 国产综合婷婷 | 日韩美女啪啪 | 神马影院一区二区 | 国产亚洲三级 | 伊伊成人 | 国产精品久久久久久久久 | 欧美性激情 | 男人天堂中文字幕 | 爱插美女网 | 精品福利一区 | 国内精品福利视频 | 97激情| 羞辱极度绿帽vk | 冲田杏梨一区二区三区 | 久久久免费电影 | 91蝌蚪在线| 国产视频在线观看网站 | sm捆绑调教视频 | 四虎国产成人精品免费一女五男 | 黄色专区 | www.xxxx欧美| av成人 | 亚洲色图制服丝袜 | 91在线短视频 | 亚洲视频一区二区在线观看 | 陪读偷伦初尝小说 | 国产精品综合网 | 亚洲男人天堂2023 | 蜜桃传媒一区二区亚洲av | 五月天男人天堂 | 添女人荫蒂视频 | www视频在线| 爱爱视频在线看 | 动漫精品一区二区三区 | 日本在线视频免费观看 | 亚洲春色另类 | 国产又黄又粗又猛又爽视频 | 少妇精品久久久一区二区三区 | 午夜视频福利网站 | 2019中文字幕在线视频 | youjizzcom日本 | 香蕉视频一区二区 | 一品道av| 国产最新自拍 | 欧美人妻精品一区二区 | 一级黄色片免费在线观看 | 日韩美女一区 | 可以免费看的黄色 | 国产精品久久久久久久无码 | 后进极品美女圆润翘臀 | 国产乱码久久久 | 日韩欧美精品 | 青青久操| 性猛交xxxx乱大交孕妇印度 | 神马伦理影视 | 精品国产1区 | 欧美va亚洲va| 亚洲色图制服丝袜 | 草民午夜理伦三级 | 在线观看黄色小视频 | 色婷婷电影网 | 亚洲精品3| 日韩一级二级三级 | www.九色.com |