Nodejs學(xué)習(xí)第5天

Node.js內(nèi)置基礎(chǔ)模塊fs, Node.js 提供了基礎(chǔ)的文件操作癌瘾,并同時(shí)提供文件的同步和異步操作,如:

.....................
All the methods have asynchronous and synchronous forms.

同樣觅丰,如果想使用Node.js該內(nèi)置模塊,需要在使用之前導(dǎo)入該模塊妨退,如:

To use this module do require('fs')
//這里舶胀,Node.js有規(guī)范,如果require 參數(shù)為非路徑字符碧注,則會(huì)當(dāng)做內(nèi)置模塊導(dǎo)入嚣伐。所以,使用Node內(nèi)置模塊規(guī)范語(yǔ)句為:

var modu = require('fs') ;
//非內(nèi)置模塊為:
var nModu = require('./server') ; //這里的路徑可以是相對(duì)路徑萍丐,也可以是絕對(duì)路徑

大概瞄了一眼api轩端,基本上提供的每個(gè)同步操作函數(shù)都是在異步操作函數(shù)名字之后追加Sync,也就是說(shuō)Sync結(jié)尾的函數(shù)基本可以認(rèn)定為同步操作,需要注意逝变。

fs模塊異步操作需要提供一個(gè)回調(diào)函數(shù)作為最后的參數(shù)傳遞基茵,該回調(diào)函數(shù)接受兩個(gè)參數(shù):

  1. 第一個(gè)參數(shù)為操作狀態(tài)標(biāo)示,如果操作成功返回null 或undefined ,否則壳影,該參數(shù)為一個(gè)error對(duì)象拱层。
  2. 第二個(gè)參數(shù)為返回的數(shù)據(jù)(data),如果失敗,則為undefined.
    例如 fs.readFile:
//這是官網(wǎng)api 栗子
fs.readFile('/etc/passwd', (err, data) => { 
    if (err) throw err; console.log(data);
});

同步操作宴咧,不需要提供回調(diào)函數(shù)根灯,只需要使用一個(gè)變量接受結(jié)果就可以,不過(guò)如果有異常需要使用try..... catch.... , 栗子如下:

var fdata = fs.readFileSync('/etc/passwd','utf-8') ;
console.log('fdata') ; 

//異常捕獲

try{
    var fdata = fs.readFileSync('/etc/passwd','utf-8') ;
    console.log('fdata') ; 
}catch(e) {
    console.log(' exception: ',e) ;
}

fs模塊提供了細(xì)致的api,包含查看文件當(dāng)前屬性信息(fs.stat(path, callback)),通過(guò)它可以看到指定文件的創(chuàng)建時(shí)間烙肺,文件大小等信息纳猪,以及轉(zhuǎn)換到操作流上更方便文件的操作fs.createReadStream(path[, options])等等,使用的時(shí)候參考api就可以很快上手,詳細(xì)的文件操作api在這里:
File System: https://nodejs.org/api/fs.html
這里有幾個(gè)大類:

  1. Class: fs.FSWatcher
  2. Class: fs.ReadStream
  3. Class: fs.Stats
  4. Class: fs.WriteStream

內(nèi)部均提供了文件的常用操作桃笙,需要注意的是氏堤,它們內(nèi)部提供函數(shù)和事件的版本。

var fs = require('fs') ;
// fs.access('./ht.html', fs.constants.R_OK | fs.constants.W_OK, (err) => {
//   console.log(err ? 'no access!' : 'can read/write');
// });
// 
var rs = fs.createReadStream('./ht.html', 'utf-8');
//這里使用了`data` 事件搏明,用來(lái)監(jiān)聽(tīng)數(shù)據(jù)讀取事件鼠锈,如果數(shù)據(jù)量大,這個(gè)回調(diào)函數(shù)會(huì)被調(diào)用多次星著,具體上限是多少购笆,我沒(méi)有測(cè)試過(guò)。
rs.on('data', function (data) {
    console.log('data:', data) ;
});

rs.on('end', function () {
    console.log('end');
});

rs.on('error', function (err) {
    console.log('error: ' , err);
});

保存上面代碼到一個(gè)js文件强饮,運(yùn)行 node node.js 該文件內(nèi)容就輸出到命令行窗口上了由桌。

[palm@arch]: ~/Desktop/js>$ node node.js 
data: <html>
<head>js test page</head>

js test page!
<body>
</body>
<script type="text/javascript" src= 'jquery-1.11.1.js'></script>
<script type="text/javascript" src='extend.js'></script>
</html>
end

fs模塊就學(xué)到這里,后面如果用到了邮丰,再來(lái)查詢文檔行您,如果上面有錯(cuò)誤,請(qǐng)路過(guò)的朋友指出剪廉,謝謝了~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末娃循,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子斗蒋,更是在濱河造成了極大的恐慌捌斧,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泉沾,死亡現(xiàn)場(chǎng)離奇詭異捞蚂,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)跷究,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)姓迅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人俊马,你說(shuō)我怎么就攤上這事丁存。” “怎么了柴我?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵解寝,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我艘儒,道長(zhǎng)聋伦,這世上最難降的妖魔是什么夫偶? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮嘉抓,結(jié)果婚禮上索守,老公的妹妹穿的比我還像新娘晕窑。我一直安慰自己抑片,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布杨赤。 她就那樣靜靜地躺著敞斋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪疾牲。 梳的紋絲不亂的頭發(fā)上植捎,一...
    開(kāi)封第一講書(shū)人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音阳柔,去河邊找鬼焰枢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛舌剂,可吹牛的內(nèi)容都是我干的济锄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼霍转,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荐绝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起避消,我...
    開(kāi)封第一講書(shū)人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤低滩,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后岩喷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體恕沫,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年纱意,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了婶溯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妇穴,死狀恐怖爬虱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腾它,我是刑警寧澤跑筝,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站瞒滴,受9級(jí)特大地震影響曲梗,放射性物質(zhì)發(fā)生泄漏赞警。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一虏两、第九天 我趴在偏房一處隱蔽的房頂上張望愧旦。 院中可真熱鬧,春花似錦定罢、人聲如沸笤虫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)琼蚯。三九已至,卻和暖如春惠况,著一層夾襖步出監(jiān)牢的瞬間遭庶,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工稠屠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留峦睡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓权埠,卻偏偏與公主長(zhǎng)得像榨了,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弊知,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

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

  • https://nodejs.org/api/documentation.html 工具模塊 Assert 測(cè)試 ...
    KeKeMars閱讀 6,332評(píng)論 0 6
  • topics: 1.The Node.js philosophy 2.The reactor pattern 3....
    宮若石閱讀 1,080評(píng)論 0 1
  • Node.js是目前非匙璐火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特秩彤。 眾所周知叔扼,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,615評(píng)論 2 41
  • 文件系統(tǒng)模塊是一個(gè)封裝了標(biāo)準(zhǔn)的 POSIX 文件 I/O 操作的集合。通過(guò)require('fs')使用這個(gè)模塊漫雷。...
    保川閱讀 783評(píng)論 0 0
  • Node.js是目前非彻细唬火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特降盹。 眾所周知与柑,在Netscape設(shè)計(jì)出JavaScri...
    Myselfyan閱讀 4,072評(píng)論 2 58