Node.js fs(File System)模塊初學(xué)

File System

作為Node.js的文件寫入寫出模塊儡羔,它的所有方法都分為同步形式和異步形式。

  • 異步處理文件的方法通常以一個(gè)回調(diào)函數(shù)作為它的最后一個(gè)參數(shù)斟览,不同方法的回調(diào)函數(shù)有不同的參數(shù)毁腿,但是回調(diào)函數(shù)的第一個(gè)參數(shù)總是err(用以存儲(chǔ)異常),如果方法執(zhí)行成功趣惠,那么err的值會(huì)是null or undefined狸棍。
  • 同步處理文件的方法由于沒有回調(diào)函數(shù),所以如果我們需要獲取執(zhí)行時(shí)的異常味悄,那就使用try/catch去捕捉吧草戈!

小技巧:同步方法名的后4個(gè)字符總是Sync,沒有標(biāo)識(shí)同步Sync則說明該方法是異步的侍瑟;

且同步方法的命名總是:同步方法名 = 異步方法名 + “Sync”

常用方法

fs.access(path, [mode], callback)

  • path <String> | <Buffer> (字符串和二進(jìn)制緩存)
  • mode <Integer> 多個(gè)值用“|”分離
    • fs.F_OK >>文件是否是對(duì)進(jìn)程可見的唐片,這個(gè)參數(shù)用于判斷文件是否存在丙猬,但是并不會(huì)驗(yàn)證wrx權(quán)限許可。
    • fs.R_OK >>當(dāng)前fs進(jìn)程是否擁有該文件的讀權(quán)限
    • fs.W_OK >>當(dāng)前fs進(jìn)程是否擁有該文件的寫權(quán)限
    • fs.X_OK >>當(dāng)前fs進(jìn)程是否擁有該文件的執(zhí)行權(quán)限费韭,這個(gè)值在Windows下是無效的喔
  • callback <Function>

舉個(gè)栗子:

fs.access("./test01.xml", function(err){
    console.log(err ? '文件不存在' : '文件存在');
})

fs.access('/etc/passwd', fs.R_OK | fs.W_OK, (err) => {
  console.log(err ? 'no access!' : 'can read/write');
});```

**fs.readFile(filename, [options], callback)**

- filename <String> | <Buffer> | <Integer> (這里的int類型我不知道是怎么回事)
- options <Object> | <String>
  - encoding <String> | <Null>  default = `null`
  - flag <String>  default = `"r"` 如果flag的值為`w+` 或 `w`(也就是說`{flag:"w+"}`),則在文件不存在的情況下茧球,會(huì)新建一個(gè)文件;
- callback <function>

該方法的回調(diào)函數(shù)callback星持,有兩個(gè)參數(shù):`err` & `data`抢埋,其中`data`就是文件中的數(shù)據(jù),如果encoding未設(shè)置督暂,則data為二進(jìn)制的數(shù)據(jù)

舉個(gè)栗子:

fs.readFile('/etc/passwd', (err, data) => {
if (err) throw err;
console.log(data);
//如果想要輸出文件中的內(nèi)容揪垄,有兩種方法:1.data.toString(); 2.readFile方法設(shè)置encoding
});

//同步方法
var data = fs.readFileSync("./test01.xml", {flag:"w+", encoding:"utf-8"});
console.log(data);


**fs.writeFile(file, data, [options], callback)**
- file <String> | <Buffer> | <Integer> filename or file descriptor
- data <String> | <Buffer>
- options <Object> | <String> 單個(gè)值用String多個(gè)值用Object
  - encoding <String> | <Null> default = 'utf8'
  - mode <Integer> default = 0o666
  - flag <String> default = 'w'
- callback <Function>
>如果文件是已經(jīng)存在了,則替換已存在的文件(還有個(gè)方法fs.appendFile(file, data, [options], callback), 是在原文件中添加data數(shù)據(jù)逻翁,添加在原文件末尾)

舉個(gè)栗子:

fs.WriteFile("output.xml", data, err =>{
if(err) throw err;
cosole.log("寫入成功");
} )



OK,暫時(shí)就寫這幾個(gè)方法饥努,后面有用到會(huì)來補(bǔ)充!

> 參考資料:[Node File System](http://nodejs.cn/api/fs.html)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末八回,一起剝皮案震驚了整個(gè)濱河市酷愧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缠诅,老刑警劉巖溶浴,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異滴铅,居然都是意外死亡戳葵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門汉匙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拱烁,“玉大人,你說我怎么就攤上這事噩翠∠纷裕” “怎么了?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵伤锚,是天一觀的道長(zhǎng)擅笔。 經(jīng)常有香客問我,道長(zhǎng)屯援,這世上最難降的妖魔是什么猛们? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮狞洋,結(jié)果婚禮上弯淘,老公的妹妹穿的比我還像新娘。我一直安慰自己吉懊,他們只是感情好庐橙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布假勿。 她就那樣靜靜地躺著,像睡著了一般态鳖。 火紅的嫁衣襯著肌膚如雪转培。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天浆竭,我揣著相機(jī)與錄音浸须,去河邊找鬼。 笑死兆蕉,一個(gè)胖子當(dāng)著我的面吹牛羽戒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虎韵,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼缸废!你這毒婦竟也來了包蓝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤企量,失蹤者是張志新(化名)和其女友劉穎测萎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體届巩,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡硅瞧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了恕汇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腕唧。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瘾英,靈堂內(nèi)的尸體忽然破棺而出枣接,到底是詐尸還是另有隱情,我是刑警寧澤缺谴,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布但惶,位于F島的核電站,受9級(jí)特大地震影響湿蛔,放射性物質(zhì)發(fā)生泄漏膀曾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一阳啥、第九天 我趴在偏房一處隱蔽的房頂上張望添谊。 院中可真熱鬧,春花似錦苫纤、人聲如沸碉钠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喊废。三九已至祝高,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間污筷,已是汗流浹背工闺。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瓣蛀,地道東北人陆蟆。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惋增,于是被迫代替她去往敵國(guó)和親叠殷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測(cè)試 ...
    KeKeMars閱讀 6,327評(píng)論 0 6
  • fs.rename(path1, path2, [callback]),fs.renameSync(path1, ...
    Jalon閱讀 508評(píng)論 0 0
  • 文件系統(tǒng)模塊是一個(gè)封裝了標(biāo)準(zhǔn)的 POSIX 文件 I/O 操作的集合诈皿。通過require('fs')使用這個(gè)模塊林束。...
    保川閱讀 779評(píng)論 0 0
  • Node.js 常用工具 util 是一個(gè)Node.js 核心模塊,提供常用函數(shù)的集合稽亏,用于彌補(bǔ)核心JavaScr...
    FTOLsXD閱讀 535評(píng)論 0 2
  • 個(gè)人入門學(xué)習(xí)用筆記壶冒、不過多作為參考依據(jù)。如有錯(cuò)誤歡迎斧正 目錄 簡(jiǎn)書好像不支持錨點(diǎn)截歉、復(fù)制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,467評(píng)論 1 37