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


在Node.js中操作文件系統

     在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個異步方法,我們不能保證那個異步方法先執行完,如果我們先要第一個方法執行完后,在執行第二個方法,那么代碼需要如下寫了:

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方法;如下:

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

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

'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);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM