Node.js 內(nèi)置的fs模塊使用

Node.js 內(nèi)置的fs模塊就是文件系統(tǒng)模塊,負(fù)責(zé)讀寫文件饰豺。和所有其他JS模塊不同的是晦闰,fs模塊同時(shí)提供了異步和同步的方法。

  • 文件寫入
var fs = require("fs");
//       要寫入的文件   要寫入的內(nèi)容       a追加|w寫入(默認(rèn))|r(讀任腔摺)  回調(diào)函數(shù)
fs.writeFile("11.txt","我是要寫入的11.txt文件的內(nèi)容",{flag:"a"},function (err) {
    if(err){
        return console.log(err);
    }else {
        console.log("寫入成功");
    }
})

運(yùn)行上述代碼的時(shí)候串结,會(huì)發(fā)現(xiàn)該父級(jí)文件夾下會(huì)自動(dòng)生成一個(gè)11.txt文件。

fs.appendFile("11.txt","這是要追加的內(nèi)容",function (err) {
    if(err){
        return console.log(err);
    }else {
        console.log("追加成功");
    }

})

image

因?yàn)槭亲芳拥膬?nèi)容舅列,所以內(nèi)容會(huì)自動(dòng)在該文件后面

上面說(shuō)的方法都是異步操作肌割,異步操作會(huì)返回一個(gè)回調(diào)函數(shù),在回調(diào)函數(shù)里面執(zhí)行結(jié)束語(yǔ)句帐要,不然會(huì)出現(xiàn)錯(cuò)誤

而所有的同步函數(shù)把敞,都只是在異步函數(shù)后面加上Sync

var res = fs.writeFileSync("11.txt","這里面是使用同步方法寫的內(nèi)容");
console.log(res);

  • 文件讀取

異步方法讀取文件

//文件讀取
fs.readFile("11.txt",function (err,data) {
    if(err){
        return console.log(err);
    }else {
        //toString() 將buffer格式轉(zhuǎn)化為中文
        console.log(data.toString());
    }
})

如果使用同步的方法,不需要在后面使用回調(diào)方法

var data = fs.readFileSync("11.txt");
console.log(data.toString());

  • 文件修改
//    要修改名字的文件  修改后的名字  回調(diào)函數(shù)
fs.rename("11.txt","22.txt",function (err) {
    if(err){
        console.log(err);
    }else {
        console.log("修改成功");
    }
})

  • 文件刪除
//刪除文件
fs.unlink("11.txt",function (err) {
    if(err){
        return console.log(err);
    }else {
        console.log("刪除成功");
    }
})

  • 文件復(fù)制(先讀取,在復(fù)制)

異步方法

fs.readFile("22.txt",function (err,data) {
    if(err){
        return console.log(err);
    }else{
        var getData = data.toString();
        fs.writeFile("33.txt",getData,function (err) {
            if(err){
                return console.log(err);
            }else {
                console.log("復(fù)制歐克");
            }
        })
    }
})

同步方法,相比異步少了很對(duì)回調(diào)

var res = fs.writeFileSync("44.txt",fs.readFileSync("22.txt"));
console.log(res);

  • 文件夾創(chuàng)建
//文件夾創(chuàng)建
//1 -- 執(zhí)行   2 -- 寫入  4 -- 讀取  7=1+2+4  以為創(chuàng)建的文件夾可執(zhí)行可讀可寫
fs.mkdir("img",0777,function (err) {
    if(err){
        console.log(err);
    }else {
        console.log("創(chuàng)建成功");
    }
})

上述的權(quán)限就是在文件簡(jiǎn)介里面權(quán)限

image
  • 修改文件夾權(quán)限
fs.chmod("img",0333,function (err) {
    if(err){
        return console.log(err);
    }else {
        console.log("修改ok");
    }
})

image
  • 修改文件夾名字榨惠,與修改文件是同一個(gè)函數(shù)
//修改文件夾名稱
fs.rename("img","image",function (err) {
    if(err){
        return console.log(err);
    }else {
        console.log("修好");
    }
})

  • 判斷某個(gè)文件件是否存在先巴,如果不存在創(chuàng)建,exists函數(shù)冒冬,是唯一一個(gè)回調(diào)函數(shù)中不帶err的回調(diào)函數(shù)
fs.exists("img",function (exists) {
    if(exists){
        console.log("該文件夾已經(jīng)存在");
    }else {
        fs.mkdir("img",function (err) {
            if(err){
                return console.log(err);
            }else {
                console.log("創(chuàng)建成功");
            }
        })
    }
})

  • 刪除文件夾(只能刪除空的文件夾)
fs.rmdir("img",function (err) {
    if(err){
        return console.log(err);
    }else {
        console.log("刪除成功");
    }
})

  • 讀取文件夾里面的信息
fs.readdir("image",function (err,data) {
    if(err){
        console.log(err);
    }else {
        console.log(data);
    }
})

image
  • 判斷一個(gè)位置問(wèn)價(jià)是否是文件或者是文件件
fs.stat("image",function (err,data) {
   if(err){
       return console.log(err);
   }else {
       //判斷是否是文件
       if(data.isFile()){
           //是文件
           console.log("yes");
       }else{
           //是文件夾
           console.log("no");
       }
   }
})

  • 刪除非空文件夾
    首先獲取到該文件夾里面所有的信息伸蚯,遍歷里面的信息,判斷是文件還是文件夾简烤,如果是文件直接刪除剂邮,如果是文件,進(jìn)入文件横侦,重復(fù)上述過(guò)程
function delFile(url) {
    var data = fs.readdirSync(url);
    for(var i = 0;i < data.length;i++){
        // console.log(data[i])
        var path = url + "/" +data[i];
        console.log(path);
        var stat = fs.statSync(path);
        if(stat.isFile()){
            fs.unlinkSync(path);
        }else{
            delFile(path);
        }
    }
    fs.rmdirSync(url);
}
delFile("image");

原文地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挥萌,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子枉侧,更是在濱河造成了極大的恐慌引瀑,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件榨馁,死亡現(xiàn)場(chǎng)離奇詭異憨栽,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)翼虫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門屑柔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人珍剑,你說(shuō)我怎么就攤上這事掸宛。” “怎么了招拙?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵唧瘾,是天一觀的道長(zhǎng)措译。 經(jīng)常有香客問(wèn)我,道長(zhǎng)饰序,這世上最難降的妖魔是什么领虹? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮菌羽,結(jié)果婚禮上掠械,老公的妹妹穿的比我還像新娘由缆。我一直安慰自己注祖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布均唉。 她就那樣靜靜地躺著是晨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪舔箭。 梳的紋絲不亂的頭發(fā)上罩缴,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音层扶,去河邊找鬼箫章。 笑死,一個(gè)胖子當(dāng)著我的面吹牛镜会,可吹牛的內(nèi)容都是我干的檬寂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼戳表,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼桶至!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起匾旭,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤镣屹,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后价涝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體女蜈,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年色瘩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鞭光。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泞遗,死狀恐怖惰许,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情史辙,我是刑警寧澤汹买,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布佩伤,位于F島的核電站,受9級(jí)特大地震影響晦毙,放射性物質(zhì)發(fā)生泄漏生巡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一见妒、第九天 我趴在偏房一處隱蔽的房頂上張望孤荣。 院中可真熱鬧,春花似錦须揣、人聲如沸盐股。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)疯汁。三九已至,卻和暖如春卵酪,著一層夾襖步出監(jiān)牢的瞬間幌蚊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工溃卡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溢豆,地道東北人娄蔼。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓强岸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親载城。 傳聞我的和親對(duì)象是個(gè)殘疾皇子最铁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354