nodeJs文件系統(tǒng)(fs)與流(stream)

文件系統(tǒng)(File System):

  1. 在Node中,文件系統(tǒng)的交互是非常重要的骄酗,服務(wù)器的本質(zhì)就是將本地的文件發(fā)送給客戶端稀余,
  2. Node通過fs模塊來和文件系統(tǒng)進(jìn)行交互,該模塊提供了一些標(biāo)準(zhǔn)的文件訪問API類打開趋翻、讀取睛琳、寫入文件、以及與其交互踏烙。
  3. 要是用fs模塊师骗,首先要從核心模塊中加載; 使用 const fs= require('fs') ; 來引入

fs使用特點(diǎn):

  1. fs模塊中的所有操作都有兩種形式可供選擇同步和異步讨惩,
  2. 同步文件系統(tǒng)會(huì)阻塞程序的執(zhí)行辟癌,也就是除非操作完畢,否則不會(huì)向下執(zhí)行代碼荐捻。
  3. 異步文件系統(tǒng)不會(huì)阻塞程序的執(zhí)行愿待,而是在操作完成時(shí),通過回調(diào)函數(shù)將結(jié)果返回靴患。
//1\. 引入模塊
const fs= require("fs");
// console.log(fs)

//2\. 打開文件
// fs.open 異步讀取(通常用異步 需設(shè)置回調(diào)函數(shù))  
// fs.openSync 同步讀纫觥(讀取時(shí)會(huì)阻塞線程)

let hello = fs.openSync("hello.txt", "w");
//                     不存在會(huì)自動(dòng)新建

//3\. 寫入內(nèi)容
fs.writeFileSync(hello,'hello word!');

//4\. 保存并退出
fs.closeSync(hello);

文件操作:

  1. 打開文件:
    fs.open(path,flags[,mode],callback)
    異步打開 異步都是回調(diào) 回調(diào)嵌套回調(diào)
    fs.openSync(path,flags[,mode])
    同步打開

文件標(biāo)記(flags): http://nodejs.cn/api/fs.html#fs_fs_open_path_flags_mode_callback

一鸳君、同步打開文件

    //1\. 引入模塊 
    let fs = require('fs');

    //2.打開文件 同步
    var fd=fs.openSync('1.txt', 'w');

    //3.寫入內(nèi)容
    fs.writeFileSync(fd,"hello world!"); 

    //4\. 保存并關(guān)閉
    fs.closeSync(fd);

二、異步打開文件

   //1.引入模塊
   let fs = require('fs');

   //2\. 打開文件
   fs.open('1.txt', 'a', (err, fd)=>{
       //2.1判斷是否出錯(cuò)
       if(!err){
           //正確 2.2寫入文件
           fs.writeFile(fd, "今天天.....氣真好患蹂!", (err)=>{
                //2.2.1 寫入成功
                if(!err){
                    console.log('寫入成功');
                }else{
                    throw err;
                }
                //2.3 關(guān)閉文件
                fs.close(fd, (err)=>{
                    if(!err){
                        console.log('文件以保存并關(guān)閉')
                    }else{
                        throw err;
                    }
                })
           })
       }else{
           throw err;
       }
   })

使用文件流寫入

文件流寫入: http://nodejs.cn/api/fs.html#fs_fs_createwritestream_path_options

//同步操作

//1\. 引入模塊
let fs= require('fs');

//2.建立通道
let ws = fs.createWriteStream('fsw.txt')

//3.打開通道
ws.once('open', ()=>{
    console.log('通道已經(jīng)打開');
})

ws.once('close', ()=>{
    console.log('通道已經(jīng)關(guān)閉');
})

//4\. 寫入內(nèi)容
ws.write('我愛你或颊,');
ws.write('我愛你,');
ws.write('我愛你传于,');

讀寫文件:

文檔地址:http://nodejs.cn/api/fs.html#fs_fs_readfile_path_options_callback
讀取文檔:

//1\. 引入模塊
let fs = require('fs');

//2\. 讀取文件
fs.readFile('source/hello.txt','utf8',(err,data)=>{
    //判斷是否成功
    if(!err){
        console.log(data);//
        // console.log(data.toString());
        //data 默認(rèn)讀取的是二進(jìn)制 使用toString() 方法轉(zhuǎn)換成
    }else{
        throw err;
    }
})

讀取圖片:

//3\. 讀取圖片
fs.readFile("source/psb.jpg",(err,data)=>{
    //判斷是否成功
    if(!err){
        //寫入圖片
        fs.writeFile('img.jpg', data, (err)=>{
            if(!err){
                console.log('寫入成功囱挑!')
            }else{
                throw err;
            }
        })
    }else{
        throw err;
    }
});

讀取視頻:

//1\. 引入模塊
let fs= require('fs');

//2\. 讀取視頻
fs.readFile('source/cddbb.mp4', (err, data)=>{
    if(!err){
        // 寫入視頻
        fs.writeFile('nmx.mp4', data, (err)=>{
            if(!err){
                console.log('寫入成功!');
            }else{
                throw err;
            }
        })
    }else{
        throw err;
    }
})

//3\. 流式文件的讀入(批量文件處理)
let re= fs.createReadStream('source/cddbb.mp4');
//建立讀取流
let ws= fs.createWriteStream('新建的視頻.mp4');
//建立寫入流

//4\. 創(chuàng)建管道
re.pipe(ws);//文件流傳輸
console.log('文件流傳輸完成')

參考:詳解NodeJS文件系統(tǒng)fs
我的GitHub總結(jié)的NodeJS筆記

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沼溜,一起剝皮案震驚了整個(gè)濱河市平挑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖通熄,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唆涝,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡唇辨,警方通過查閱死者的電腦和手機(jī)廊酣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赏枚,“玉大人亡驰,你說我怎么就攤上這事《龇” “怎么了凡辱?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)诫睬。 經(jīng)常有香客問我煞茫,道長(zhǎng),這世上最難降的妖魔是什么摄凡? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任续徽,我火速辦了婚禮,結(jié)果婚禮上亲澡,老公的妹妹穿的比我還像新娘钦扭。我一直安慰自己,他們只是感情好床绪,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布客情。 她就那樣靜靜地躺著,像睡著了一般癞己。 火紅的嫁衣襯著肌膚如雪膀斋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天痹雅,我揣著相機(jī)與錄音仰担,去河邊找鬼。 笑死绩社,一個(gè)胖子當(dāng)著我的面吹牛摔蓝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播愉耙,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼莺戒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼谆趾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤麻惶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吠卷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沦零。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祭隔。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖路操,靈堂內(nèi)的尸體忽然破棺而出疾渴,到底是詐尸還是另有隱情,我是刑警寧澤屯仗,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布搞坝,位于F島的核電站,受9級(jí)特大地震影響魁袜,放射性物質(zhì)發(fā)生泄漏桩撮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一峰弹、第九天 我趴在偏房一處隱蔽的房頂上張望店量。 院中可真熱鬧,春花似錦鞠呈、人聲如沸融师。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)旱爆。三九已至,卻和暖如春窘茁,著一層夾襖步出監(jiān)牢的瞬間怀伦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工山林, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留空镜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓捌朴,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親张抄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子砂蔽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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