在Node.js中操做文件系統(一)

在Node.js中操做文件系統html

     在Node.js中,使用fs模塊來實現全部有關文件及目錄的建立,寫入及刪除操做。在fs模塊中,全部對文件及目錄的操做均可以使用同步與異步這兩種方法。好比在執行讀文件操做時,可使用readFile與readFileSync方法。在全部這些方法中,方法名中具備Sync後綴的方法均爲同步方法,而不具備Sync後綴的方法均爲異步方法。二者的區別是:在使用同步方法執行操做結束以前,不能執行後續代碼。好比以下:編程

var  fs = require(「fs」);
var  data = fs.readFileSync(‘./index.html’,’utf8’);
// 等待操做結果返回,而後利用該結果。
console.log(data);

而異步方法將操做結果做爲回調函數的參數進行返回。在方法調用以後,能夠當即執行後續代碼,代碼以下所示:數組

var fs = require(‘fs’);
fs.readFile(‘./index.html’,’utf8’,function(err,data){
    console.log(data);
})
Console.log(1);// 這句代碼先執行

可是異步的方法是不能保證順序執行的。好比以下緩存

fs.readFile(‘./index.html’,’utf8’,function(err,data){
    console.log(data);
})

fs.readFile(‘./index2.html’,’utf8’,function(err,data){
    console.log(data);
})

上面2個異步方法,咱們不能保證那個異步方法先執行完,若是咱們先要第一個方法執行完後,在執行第二個方法,那麼代碼須要以下寫了:app

fs.readFile(‘./index.html’,’utf8’,function(err,data){
    console.log(data);
    fs.readFile(‘./index2.html’,’utf8’,function(err,data){
         console.log(data);
    })

})

咱們先來看看文件的讀寫操做;以下:異步

一:文件的讀操做;函數

讀取文件的方法可使用fs模塊中的readFile與readFileSync方法,咱們先來了解readFile方法;以下:ui

  fs.readFile(filename,[options],callback);編碼

在readFile方法中,有三個參數,其中filename參數與callback參數是必須的,options參數是可選的,filename參數用於指定讀取文件的完整文件路徑及文件名。Options參數值爲一個對象,在其中指定讀取文件時須要使用的選項,在該參數值對象中可使用flag屬性指定對該文件採起什麼操做,默認值爲 ’r’(若是指定讀取的文件不存在,則拋出異常)。能夠指定的值以下:spa

'r’: 讀取文件,若是文件不存在則拋出異常。

‘r+’: 讀取並寫入文件,若是文件不存在則拋出異常。

‘w’:  寫入文件。若是文件不存在則建立該文件,若是該文件已存在則清空文件內容。

 ‘wx’: 做用與’w’相似。

‘w+’ 讀取並寫入文件。若是文件不存在則建立該文件,若是該文件已存在則清空文件內容。

‘wx+’ 做用與’w+’相似。

‘a’ 追加寫入文件,若是該文件不存在則建立該文件。

‘ax’ 做用與’a’相似。

‘a+’ 讀取並追加寫入文件,若是文件不存在則建立該文件。

 ‘ax+’ 做用與’a+’相似。

在options參數值中,可以使用encoding屬性指定使用何種編碼格式來讀取該文件,可指定屬性值爲’utf8’,’ascii’與’base64’. Callback參數用於文件讀取完畢執行的回調函數。好比下面的方法:

Function(err,data){}

其中第一個參數值爲讀取文件操做失敗時候觸發的錯誤對象,第二個參數值爲讀取到的文件內容。  當在options參數值對象中使用encoding屬性指定編碼格式時,該參數值爲將文件內容指定編碼格式通過編碼後的字符串,當不指定編碼格式時,該參數值爲一個存放了文件中原始二進制內容的緩存區對象。

咱們能夠先來看一個簡單的readFile方法的使用demo,好比在個人根目錄下放一個test.txt文件,內容以下:

這是第一行

這是第二行

而後在應用程序的根目錄下放一個app.js文件,代碼以下:

var fs = require('fs');

fs.readFile('./test.txt',function(err,data){
    if(err) {
        console.log("讀取文件時發生錯誤");
    }else {
        console.log(data);
    }
});

咱們讀取test.txt文件中的內容,若是讀取成功,則在控制檯將其輸出,若是讀取失敗,則在控制檯中輸出 」讀取文件時發生錯誤」.

注意:test.txt文件須要保存編碼爲utf-8

以下所示:

由上可知:控制檯輸出的是存取了文件原始二進制數據的緩存區中的內容,若是要將該內容以字符串的形式輸出,有2種方式以下:

代碼改成以下1:

var fs = require('fs');
fs.readFile('./test.txt',function(err,data){
    if(err) {
        console.log("讀取文件時發生錯誤");
    }else {
        console.log(data.toString());
    }
});

第二種形式是:咱們能夠指定options參數並將encoding屬性值指定爲某種編碼格式,則回調函數中的第二個參數值返回將文件內容根據指定編碼格式進行編碼後的字符串。以下代碼:

var fs = require('fs');
fs.readFile('./test.txt','utf8',function(err,data){
    if(err) {
        console.log("讀取文件時發生錯誤");
    }else {
        console.log(data);
    }
});

運行以下:

在使用同步方式讀取文件時,使用readFileSync方法,該方法使用以下:

var data = fs.readFileSync(filename,[options]);

在readFileSync方法中,使用兩個參數,這兩個參數的含義及指定方法與readFile方法中使用filename參數與options 參數的含義及指定方法徹底相同。

以下代碼:

var fs = require('fs');
try{
    var data = fs.readFileSync('./test.txt','utf8');
    console.log(data);
}catch(e){
    console.log("讀取文件時發生錯誤。");
}

執行效果如上所示:

二:文件的寫操做;

在完整寫入一個文件時,咱們可使用fs模塊的writeFile方法或writeFileSync方法。使用方法以下所示:

fs.writeFile(filename,data,[options],callback);

     在writeFile方法中,使用4個參數,其中filename,data,callback爲必須指定的參數,[options]爲可選參數,filename參數用於指定須要被寫入文件的完整文件路徑及文件名,data參數用於指定須要寫入的內容,參數值能夠爲一個字符串或一個buffer對象,該字符串或緩存區中的內容將被完整地寫入到文件中。Options參數值爲一個對象,在其中指定寫入文件時須要使用的選項,在該參數值對象中可使用以下所示的屬性值。

1. flag屬性:用於指定對該文件採起何種操做,默認值’w’(文件不存在時建立該文件,文件已存在時重寫該文件,)可指定值及其含義與readFile方法中使用的options參數值中的flag屬性的可指定值及其含義相同。

2. mode屬性:用於指定當文件被打開時對該文件的讀寫權限,默認值爲0666(可讀寫)。該屬性值及fs模塊中的各方法中的mode參數值的指定方法以下所示:使用4個參數組成mode屬性值或mode參數值,其中第一個數字必須爲0,第二個數字用於規定文件或目錄全部者的權限,第三個數字用於規定文件或目錄全部者所屬用戶組的權限,第四個數字規定其餘人的權限,能夠設定的數字以下所示:

1. 執行權限

2. 寫權限

3. 讀權限

若是須要設置讀寫等複合權限,能夠對以上三個數字進行加運算,好比使用 2+4=6來設置讀寫權限。

下面咱們來看看demo,其中app.js代碼以下:

var fs = require('fs');
fs.writeFile('./message.txt',"這是第一行。\r\n這是第二行.",function(err){
    if(err) {
        console.log("寫文件操做失敗");
    }else {
        console.log("寫文件操做成功");
    }
});

在上面的代碼中,咱們將在應用程序的根目錄建立一個message.txt文件並在其中寫入兩行文字。咱們能夠去看下根目錄就知道,就生成了一個message.txt文件了。

接下來咱們看一個在文件中寫入緩存區中數據的代碼,以下代碼:

var fs = require('fs');
var data = new Buffer("我喜好編程");
fs.writeFile('./message.txt',data,function(err){
    if(err) {
        console.log("寫文件操做失敗");
    }else {
        console.log("寫文件操做成功");
    }
});

如上代碼,咱們能夠看到在message.txt中,寫文件操做成功,我喜好編程幾個字也在message.txt中了。

接下來咱們能夠經過options參數中設置flag屬性值的方式修改對文件的操做方式,好比在代碼中,咱們可使用writeFile方法在message.txt文件尾部追加」這是追加的數據」 文字。好比以下代碼:

var fs = require('fs');
var options = {
    flag: 'a'
};
fs.writeFile('./message.txt','這是追加的數據。',options,function(err){
    if(err) {
        console.log("寫文件操做失敗");
    }else {
        console.log("寫文件操做成功");
    }
});

進入文件的根目錄運行下 便可 能夠看到,文字被添加進去了。

內容變成以下:

我喜好編程這是追加的數據。

能夠經過在options參數中設置encoding屬性值的方式指定在文件中寫入數據時使用的編碼方式,好比以下我在個人根目錄下有2張不一樣的圖片,分別是1.gif圖片和2.gif圖片,如今咱們能夠先使用readFile讀取1.gif圖片後使用base64編碼,在readFile方法的回調函數中使用writeFile方法且該方法中使用base64編碼將讀取到1.gif圖片複製到2.gif圖片上,也就是說對以前的2.gif圖片進行覆蓋。

代碼以下:

var fs = require('fs');
fs.readFile("./1.gif",'base64',function(err,data){
    fs.writeFile('./2.gif',data.toString(),'base64',function(err){
        if(err) {
            console.log("寫文件操做失敗");
        }else {
            console.log("寫文件操做成功");
        }
    });
});

運行下便可,而後咱們繼續查看2.gif圖片能夠看到,和1.gif圖片同樣的。

writeFileSync:

在使用同步方式寫入文件時,使用writeFileSync方法,該方法使用以下:

   fs.writeFileSync(filename,data,[options]);

上面的同步方法和writeSync方法中放filename參數,data參數,[options]參數的含義及指定方法徹底相同。

appendFile和appendFileSync方法

在將一個字符串或一個緩存區中的數據追加到一個文件底部時,咱們可使用fs模塊中的appendFile和appendFileSync方法。

   fs.appendFile(filename,data,[options],callback);

在appendFile方法中,使用4個參數,其做用及指定方法與writeFile方法所使用的4個參數的做用與指定方法大體相同,區別在於,在options參數值對象中,flag屬性的默認屬性值爲’a’(在文件底部追加寫入數據,若是文件不存在,則建立該文件)。

以下代碼:

var fs = require('fs');
fs.appendFile('./message.txt','這是追加的數據2。','utf8',function(err){
    if(err) {
        console.log("寫文件操做失敗");
    }else {
        console.log("寫文件操做成功");
    }
});

運行下便可看到數據了。若是message.txt文件不存在,則建立該文件。

在使用同步方式在文件底部追加數據時,可使用appendFileSync方法,該方法的使用方式以下:

  fs.appendFileSync(filename,data,[options]);

該方法的參數和appendFile方法的參數的含義和指定方法徹底相同。

三:從指定位置處開始讀寫文件。

open:

如何從指定位置處開始讀寫文件的處理,咱們首先須要使用fs模塊中的open方法或openSync方法打開文件。open方法使用方式以下:

  fs.open(filename,flags,[mode],callback);

在open方法中,可使用4個參數,其中filename,flags參數與callback參數是必須項。mode參數是可選項,filename,flags,[mode]參數的做用及其指定方法與writeFile相同。

Callback參數用於指定文件打開操做執行完畢時的回調函數,以下所示:

  Function(err,id){}

其中第一參數值爲打開文件操做失敗時所觸發的錯誤對象,第二個參數值爲一個整數值,表明打開文件時返回的文件描述符

以下demo

var fs = require('fs');
fs.open('./message.txt','r',function(err,id){
    console.log(id);
});

截圖以下:

openSync:

在使用同步方式打開文件時,使用openSync方法,以下所示:

var  fd = fs.openSync(filename,flags,[mode]); 參數與上面open參數同樣的。

在打開文件後,能夠在回調函數中使用fs模塊中的read方法或readSync方法從文件的指定位置處讀取文件,也能夠調用fs模塊中的write方法或writeSync方法從文件的指定處開始寫入數據。

read:

下面咱們下來看看read方法,該方法從文件的指定位置處讀取文件,一直讀取到文件底部,而後將讀取到的內容輸出到一個緩存區中,該方法使用以下所示:

fs.read(fd,buffer,offset,length,position,callback);

在read方法中,使用6個參數,其中fd參數值必須爲open方法所使用的回調函數中返回文件描述符或openSync方法返回的文件描述符; buffer參數值爲一個Buffer對象,用於指定將文件數據讀取到那個緩存區中,offset參數值,length參數值與position參數值均爲一個整數,其中offset參數用於指定向緩存區中寫入數據時的開始寫入位置(以字節爲單位),length參數用於指定從文件中讀取的字節數,position參數用於指定讀取文件時的開始位置(以字節爲單位)。Callback參數用於指定文件讀取操做執行完畢時執行的回調函數,以下

Function (err,bytesRead,buffer){}

Callback有3個參數,err爲讀取文件操做失敗時所觸發的錯誤對象;bytesRead爲一個整數值,表明實際讀取的字節數,buffer爲被讀取的緩存區的對象。

咱們來看看代碼以下,咱們將使用read方法從應用程序根目錄下的內容爲」我喜好編程」字符串的message.txt文件中將」喜好編」這三個字符讀取到一個緩存區中,而後從緩存區中讀取這三個字符並將其在控制檯輸出;以下代碼:

var fs = require('fs');
fs.open('./message.txt','r',function(err,fd){
    var buf = new Buffer(255);
    // 一個漢字的utf編碼爲三個字節數據
    fs.read(fd,buf,0,9,3,function(err,bytesRead,buffer){
        console.log(buffer.slice(0,bytesRead).toString());
    });
});

演示以下:

其中message.txt內容以下:

我喜好編程這是追加的數據。這是追加的數據2。

上面代碼是先打開message.txt文件,而後offset參數用於指定向緩存區中寫入數據時的開始寫入位置,爲0;length=9 意思是:指定從文件中讀取的字節數,因爲一個漢字的utf編碼爲3個字節數據,所以中文爲3個。Position=3 用於指定讀取文件時的開始位置,所以從」喜」字開始讀取。

read方法的position參數值用於指定讀取文件時的開始位置(以字節爲單位),若是該參數爲null,將從文件的當前讀取位置處(前一次讀取時的開始位置+讀取字節數)開始讀取文件。以下代碼:

var fs = require('fs');
fs.open('./message.txt','r',function(err,fd){
    var buf = new Buffer(255);
    // 一個漢字的utf編碼爲三個字節數據
    fs.read(fd,buf,0,9,3,function(err,bytesRead,buffer){
        console.log(buffer.slice(0,bytesRead).toString());
        // 從文件的當前讀取位置繼續往下讀取
        fs.read(fd,buf,0,3,null,function(err,bytesRead,buffer){
            console.log(buffer.slice(0,bytesRead).toString());
        });
    });
});

演示以下:

readSync

在使用同步方式打開文件時,使用readSync方法,代碼以下:

var  bytesRead = fs.readSync(fd,buffer,offset,length,position);

同步中的readSync和read方法裏面的參數徹底相同,該方法返回實際從文件中讀取到的字節數。

下面是同步方式的代碼以下:

var fs = require('fs');
fs.open('./message.txt','r',function(err,fd){
    var buf = new Buffer(255);
    // 一個漢字的utf編碼爲三個字節數據
    var bytesRead = fs.readSync(fd,buf,0,9,3);
    console.log(bytesRead);
    console.log(buf.slice(0,bytesRead).toString());
});

截圖以下:

write方法和writeSync方法

在打開文件以後,可使用fs模塊中的write方法或writeSync方法從一個緩存區中讀取數據而且從文件的指定處開始寫入數據。

write方法使用以下:

fs.write(fd,buffer,offset,length,position,callback)

在write方法中,使用6個參數,fd參數值必須爲open方法或者openSync方法所使用的回調函數中返回的文件描述符;buffer參數值爲一個Buffer對象,用於指定從哪一個緩存區中讀取數據,offset,length及position參數值均爲一個整數值,其中offset參數用於指定從緩存區中讀取數據時的開始讀取位置(以字節爲單位);length參數用於指定從緩存區中讀取的字節數,position參數值用於指定寫入文件時的開始位置(以字節爲單位)。

Callback參數用於指定文件寫入操做執行完畢時執行的回調函數,以下:

Function (err,written,buffer){}

該回調使用三個參數,err參數爲寫入文件操做失敗時所觸發的錯誤對象;written參數值爲一個整數值,表明被寫入的字節數;buffer參數值爲一個Buffer對象,表明被讀取的緩存區對象;

下面咱們來看看write方法的demo,咱們將首先使用」我喜好編程」字符串建立一個緩存區對象,而後使用write方法從緩存區中讀取」喜好編」這三個字符並將其寫入message.txt文件中,代碼以下:

var fs = require('fs');
var buf = new Buffer("我喜好編程");
fs.open('./message.txt','w',function(err,fd){
    fs.write(fd,buf,3,9,0,function(err,written,buffer){
        if(err) {
            console.log("寫文件操做失敗");
        }else {
            console.log("寫文件操做成功");
        }
    });
});

運行命令後,能夠打開message.txt文件,能夠看到內容爲:‘喜好編’

Write方法的position參數值用於指定寫入文件時的開始位置(以字節爲單位),當參數值爲null時,將從文件的當前被寫入位置處(前一次寫入時的開始位置+寫入字節數)開始寫入文件。

咱們接着修改app.js代碼,在將 」喜好編」字符串寫入到應用程序根目錄的message.txt文件中後,追加寫入」程」字符串。代碼以下

var fs = require('fs');
var buf = new Buffer("我喜好編程");
fs.open('./message.txt','a',function(err,fd){
    fs.write(fd,buf,3,9,0,function(err,written,buffer){
        fs.write(fd,buf,12,3,null,function(err,written,buffer){
            if(err) {
                console.log("寫文件操做失敗");
            }else {
                console.log("寫文件操做成功");
            }
        });
    });
});

Message.txt內容以下:

喜好編程

在使用同步方式寫入文件時,使用writeSync方法,使用方式以下:

fs.writeSync(fd,buffer,offset,length,position);

上面的5個參數與write方法的參數徹底相同。

close方法與closeSync方法

在fs模塊中,提供close方法與closeSync方法以關閉文件;

使用以下:

fs.close(fd,[callback]);

在close方法中,使用2個參數,其中fd參數值必須爲open方法所使用的回調函數中返回的文件描述符或openSync返回的描述符,callback參數爲一個可選參數,用於指定關閉文件操做結束時執行的回調函數,在回調函數中使用一個參數,參數值爲關閉文件操做失敗時觸發的錯誤對象。那咱們如今能夠在咱們的根目錄下建立a.txt文件並在其中寫入 「我喜好編程」字符串,而後關閉a.txt文件。

var fs = require('fs');
var buf = new Buffer("我喜好編程");
fs.open('./a.txt','wx',function(err,fd){
    fs.write(fd,buf,0,15,0,function(err,written,buffer){
        if(err) {
            console.log("寫文件操做失敗");
        }else {
            console.log("寫文件操做成功");
            fs.close(fd);
        }
    });
});

運行下能夠看到在根目錄下生成a.txt文件,內容以下:

我喜好編程;

同步方式的close方法的使用方式以下所示:

fs.closeSync(fd);

使用一個參數,參數值爲open方法所使用的回調函數中返回的文件描述符或openSync方法返回的文件描述符。

在使用write方法或writeSync方法在文件中寫入數據時,操做系統的作法是首先將該部分數據讀到內存中,再把數據寫到文件中,當數據讀完時並不表明數據已經寫完,由於還有部分數據有可能留在內存緩衝區中,這時若是咱們調用close方法或closeSync方法關閉文件,那麼這部分的數據就會丟失,這時咱們可使用fs模塊中的fsync方法對文件進行同步操做,即將內存緩衝區中的剩餘數據所有寫入文件,該方法使用以下:

fs.fsync(fd,[callback]);

代碼能夠以下:

var fs = require('fs');
var buf = new Buffer("我喜好編程");
fs.open('./a.txt','w',function(err,fd){
    fs.write(fd,buf,0,15,0,function(err,written,buffer){
        if(err) {
            console.log("寫文件操做失敗");
        }else {
            console.log("寫文件操做成功");
            fs.fsync(fd);
            fs.close(fd);
        }
    });
});

四:建立與讀取目錄

4.1 建立目錄;

在fs模塊中,可使用mkdir方法建立目錄,使用方法以下:

fs.mkdir(path,[mode],callback);

其中path參數與callback參數爲必須輸入的參數,[mode]爲可選參數,path參數用於指定須要被建立的目錄的完整路徑及目錄名;mode參數值用於指定該目錄的權限,默認值爲0777(表示任何人可讀寫該目錄);callback參數用於指定建立目錄操做完畢時調用的回調函數,該回調函數中使用一個參數,參數值爲建立目錄操做失敗時觸發的錯誤對象。

代碼以下:

var fs = require('fs');
fs.mkdir('./test',function(err){
    if(err) {
        console.log("建立目錄操做失敗");
    }else {
        console.log("建立目錄操做成功");
    }
});

演示以下:

咱們看到在咱們的目錄下 就建立了一個test目錄;

在使用同步方式建立目錄時,可使用fs模塊中的mkdirSync方法,該方法使用以下:fs.mkdirSync(path,[mode]);

上面2個參數的含義與mkdir中的path,[mode]參數的含義同樣。

4.2讀取目錄;

在fs模塊中,可使用readdir方法讀取目錄,該方法使用以下:

fs.readdir(path,callback);

在readdir方法中,使用2個參數,其中path參數用於指定須要被讀取的目錄的完整路徑及目錄名,callback參數用於指定讀取目錄操做完畢時調用的回調函數,該回調函數以下所示:

Function(err,files){};

第一個參數爲讀取目錄操做失敗時觸發的錯誤的對象,第二個參數值爲一個數組,其中存放了讀取到的文件中的全部文件名。

下面咱們來演示下讀取根目錄下的全部文件的代碼以下:

var fs = require('fs');
fs.readdir('./',function(err,files){
    if(err){
        console.log("讀取目錄操做失敗");
    }else {
        console.log(files);
    }
});

演示以下:

在使用同步方式讀取目錄時,可使用readdirSync方法,該方法使用以下:

var file = fs.readdirSync(path);

在readdirSync方法中,使用一個參數,用於指定須要讀取的目錄的完整路徑及目錄名,該方法返回被讀取目錄中全部文件名構成的數組;

五:查看與修改文件或目錄的信息

1. 檢查文件或目錄是否存在。

在fs模塊中,可使用exists方法檢查一個文件或目錄是否存在,該方法的使用方式以下所示:

fs.exists(path,callback);

在exists方法中,可使用兩個參數,path參數用於指定須要被檢查的文件或目錄的完整路徑及文件名或目錄名,callback參數用於指定檢查文件或目錄信息操做完畢時執行的回調函數,以下:

Function(exists){}

在該回調函數中,使用一個參數,當文件或目錄存在時,該參數值爲true,不然爲false。以下代碼所示:

var fs = require('fs');
fs.exists('./message.txt',function(exists){
    if(exists) {
        console.log("該文件存在");
    }else {
        console.log("該文件不存在");
    }
});

若是根目錄有message.txt文件的話,說明文件已存在,不然的話 不存在。

在使用同步方法檢查文件是否存在時,可使用fs模塊中的existSync方法,該方法的使用方式以下:

var exists = fs.existsSync(path);

2. 獲取文件或目錄的絕對路徑

在fs模塊中,可使用realpath方法獲取一個文件或目錄的絕對路徑,該方法使用以下所示:

fs.realpath(path,[cache],callback);

path參數與callback參數爲必須的,cache參數爲可選的,其中path參數爲須要查看的文件或目錄的完整路徑,cache參數值爲一個對象,其中存放了一些預先指定的路徑,callback參數用於指定獲取文件或目錄的絕對路徑操做完畢時執行的回調函數,該回調函數使用兩個參數,其中err參數值爲獲取文件或目錄的絕對路徑操做失敗時觸發的錯誤對象,resolvedPath參數值爲獲取到的文件或目錄的絕對路徑。

以下代碼:

var fs = require('fs');
fs.realpath('./message.txt',function(err,resolvedPath){
    if(err) {
        console.log("獲取文件失敗");
    }else {
        console.log(resolvedPath);
    }
});

演示以下:

在使用同步方式獲取文件或目錄的絕對路徑時,可使用realpathSync方法,該方法使用以下所示:

var resolvedPath = fs.realpathSync(path,[cache]);

3. 修改文件或目錄的讀寫權限

在fs模塊中,可使用chmod方法修改文件或目錄的讀寫權限,該方法使用以下所示:

fs.chmod(path,mode,callback);

在chomd方法中,可使用三個參數,path參數用於指定須要被修改讀寫權限的文件的完整路徑及文件或目錄名,mode參數用於指定修改後的文件或目錄讀寫權限;callback參數用於指定修改文件讀寫權限操做完成後執行的回調函數,該回調函數使用一個參數,參數值爲修改文件讀寫權限操做失敗的觸發錯誤對象。

以下代碼:

var fs = require('fs');
// 0600表明全部者可讀寫,其餘人沒有任何權限
fs.chmod('./message1.txt',0600,function(err){
    if(err) {
        console.log("修改文件權限操做失敗");
    }else {
        console.log("修改文件權限操做成功");
    }
});

// 0644表明全部者可讀寫,其餘人只讀
fs.chmod('./message2.txt',0644,function(err){
    if(err) {
        console.log("修改文件權限操做失敗");
    }else {
        console.log("修改文件權限操做成功");
    }
});

// 0755表明全部者全部權限,其餘全部人可讀和執行
fs.chmod('./message3.txt',0755,function(err){
    if(err) {
        console.log("修改文件權限操做失敗");
    }else {
        console.log("修改文件權限操做成功");
    }
});

// 0740表明全部者全部權限,全部者所在的組只讀
fs.chmod('./message4.txt',0740,function(err){
    if(err) {
        console.log("修改文件權限操做失敗");
    }else {
        console.log("修改文件權限操做成功");
    }
});

在使用同步方式修改文件或目錄的讀寫權限時,可使用fs模塊中的chmodSync方法,使用方法以下:

fs.chmodSync(path,mode);

相關文章
相關標籤/搜索