(四)Node里面的FileSystem

文件系統(tǒng)模塊FileSystem

在使用文件系統(tǒng)模塊的前提就是必須require('fs')

  • 第一步調(diào)用核心模塊require('fs');
  • 同步Sync和異步的區(qū)別 同步?jīng)]有回調(diào)函數(shù)按部就班的走。異步則是可以直接執(zhí)行后面
  • 文件路徑前面必須要加./因?yàn)榭缙脚_(tái)了。不加(./)WINDOWS認(rèn)得出但是Linux認(rèn)不出
  • 文件路徑要么寫絕對(duì)路徑勺爱,要是相對(duì)路徑必須node到這個(gè)文件的文件夾下面這樣執(zhí)行才可以
  • 關(guān)于第四條備注
 cd d:/text
 node text.js
這樣才能運(yùn)行

關(guān)于FileSystem的幾個(gè)參數(shù)

var fs = require('fs');

(1)fs.readFile(path,callback)

//異步讀取一個(gè)文件的全部?jī)?nèi)容

(1.1)fs.readFileSync(path,callback) //同步讀取一個(gè)文件的全部?jī)?nèi)容路徑最好用__filename或者_(dá)_dirname寫絕對(duì)路徑
var fs = require('fs');
fs.readFile('./text/2.txt',function(err,data){
    //讀取失敗的時(shí)候
    //if(err){throw err}  //讀取失敗就拋出異常
    console.log(data);
    console.log(data.toString());
})
>結(jié)果<31 32 33 34 35>12345
(2)fs.writeFile(path,data,callback)同步就是fs.writeSync(path,data) 最好用__filename或者_(dá)_dirname寫絕對(duì)路徑
  • 異步的將數(shù)據(jù)寫入一個(gè)文件,如果文件不存在則創(chuàng)建
  • 如果文件存在則全部替換,data可以是string也可以是原生的buffer
var fs = require('fs');
fs.writeFile('./text/2.txt','測(cè)試數(shù)據(jù)',function(err,data){
    console.log(err+"||"+data);
})
(3)fs.appendFile(path,data,callback)同步就是fs.appendFileSync(path,data)最好用__filename或者_(dá)_dirname寫絕對(duì)路徑
  • 異步的將數(shù)據(jù)添加到一個(gè)文件的尾部,
  • 如果文件不存在,則會(huì)創(chuàng)建一個(gè)新的文件,data可以是string也可以是buffer

var fs = require('fs');
fs.appendFile('./text/2.txt','今天怎么樣',function(err){
console.log(err)
})

(4)fs.exists(path,callback)同步就是fs.existsSync(path)
  • 檢查指定路徑的文件或者文件是否存在一定注意他沒(méi)有返回值
var fs = require('fs');
fs.exists('./text/2.txt',function(data){
    if(data){
        console.log("文件已經(jīng)存在了")
    }else
    {
        console.log("文件不存在");
    }
})
(5)fs.rename(oldPath,newPath,callback)同步就是fs.renameSync(oldPath,newPath)
  • 改變地址的方法
fs.rename('./text/2.txt','2.txt',function(err){
    console.log(err);
})
(6) fs.stat(path,callback) 讀取文件的信息同步就是fs.statSync(path,callback)
  • 查看文件的狀態(tài)
var fs = require('fs');
fs.stat('2.txt',function(err,data){
    console.log(data);
})
(7) fs.unlink(path,callback)同步版本就是fs.unlinkSync(path)
  • 刪除文件

FileSystem操作文件夾

  • fs.mkdir(path,callback)同步版本fs.mkdirSync(path)
  • fs.readdir(path,callback)同步版本fs.readdirSync(path)
  • fs.rmdir(path,callback)同步版本 fs.rmdirSync(path)
  • fs.readdir(path,callback)同步版本fs.readdirSync(path)
var fs = require('fs');
fs.mkdir('./text1',function(err){
    console.log(err);
}) //創(chuàng)建目錄
fs.rmdir('./text1',function(err){
    console.log(err);
})  //移除目錄

關(guān)于讀取的一個(gè)小DEMO
var fs = require('fs');
fs.readdir('./',function(err,data){
     for(var i=0;i<data.length;i++)
    {
         var f = data[i];  //這里必須轉(zhuǎn)換一下复隆。否則下面輸出不了data[i];
         fs.stat(f,function(err,data2){
             switch(data2.mode)
             {
                 case 16822:
                     console.log("[文件夾]:"+f);
                     break;
                 case 33206:
                     console.log("文件:"+f);
                     break;
                 default:
                     console.log("其他類型:"+f);
                     break;
            }
         });
     }
})


前端自動(dòng)化的小DEMO拨匆,也就是運(yùn)行腳本后自動(dòng)創(chuàng)建text1下面的images js css還有index.html
var fs = require('fs');
var project = {"name":"text2",
               "fileData":[
                   {
                       "name":"images",
                       "type":"dir"
                   },
                   {
                       "name":"js",
                       "type":"dir"
                   },
                   {
                       "name":"css",
                       "type":"dir"
                   },
                   {
                       "name":"index.html",
                       "type":"file",
                       "content":"<html><body>今天完成了</body></html>"
                   }
               ]
                };
if(project.name)
{
    fs.mkdir(project.name,function(err,data){
        for(var i=0;i<project.fileData.length;i++)
        {
            if(project.fileData[i].type=="dir")
            {
                fs.mkdir(project.name+"/"+project.fileData[i].name,function(err,data){
                    console.log(err);
                })
            }else if(project.fileData[i].type=="file"){
                fs.writeFile(project.name+"/"+project.fileData[i].name,project.fileData[i].content,function(err,data){
                    console.log(err);
                })
            }

        }
    })
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姆涩,一起剝皮案震驚了整個(gè)濱河市挽拂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骨饿,老刑警劉巖亏栈,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異宏赘,居然都是意外死亡绒北,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門察署,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)闷游,“玉大人,你說(shuō)我怎么就攤上這事贴汪∑晖” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵扳埂,是天一觀的道長(zhǎng)业簿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)阳懂,這世上最難降的妖魔是什么梅尤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮岩调,結(jié)果婚禮上巷燥,老公的妹妹穿的比我還像新娘。我一直安慰自己号枕,他們只是感情好缰揪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著堕澄,像睡著了一般邀跃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蛙紫,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天拍屑,我揣著相機(jī)與錄音,去河邊找鬼坑傅。 笑死僵驰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蒜茴,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼星爪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了粉私?” 一聲冷哼從身側(cè)響起顽腾,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诺核,沒(méi)想到半個(gè)月后抄肖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窖杀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年漓摩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片入客。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡管毙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出桌硫,到底是詐尸還是另有隱情夭咬,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布鞍泉,位于F島的核電站皱埠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咖驮。R本人自食惡果不足惜边器,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望托修。 院中可真熱鬧忘巧,春花似錦、人聲如沸睦刃。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)涩拙。三九已至际长,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兴泥,已是汗流浹背工育。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留搓彻,地道東北人如绸。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓嘱朽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親怔接。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搪泳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • Node.js 常用工具 util 是一個(gè)Node.js 核心模塊,提供常用函數(shù)的集合扼脐,用于彌補(bǔ)核心JavaScr...
    FTOLsXD閱讀 535評(píng)論 0 2
  • 個(gè)人入門學(xué)習(xí)用筆記岸军、不過(guò)多作為參考依據(jù)。如有錯(cuò)誤歡迎斧正 目錄 簡(jiǎn)書(shū)好像不支持錨點(diǎn)谎势、復(fù)制搜索(反正也是寫給我自己看...
    kirito_song閱讀 2,472評(píng)論 1 37
  • Node.js是目前非沉莞啵火熱的技術(shù)杨名,但是它的誕生經(jīng)歷卻很奇特脏榆。 眾所周知,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,616評(píng)論 2 41
  • 文件系統(tǒng)模塊是一個(gè)封裝了標(biāo)準(zhǔn)的 POSIX 文件 I/O 操作的集合台谍。通過(guò)require('fs')使用這個(gè)模塊须喂。...
    保川閱讀 785評(píng)論 0 0
  • //公共引用 varfs =require('fs'), path =require('path'); 1、讀取文...
    才気莮孒閱讀 833評(píng)論 0 1