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

    Node.js中的fs模塊與文件系統操做相關,主要用於實現文件系統的操做。fs模塊中提供了大量與文件系統相關的操做方法,這些方法分爲同步方法和異步方法,開發人員能夠根據實際須要進行選擇,從而對文件系統進行操做。javascript

1、fs模塊的同步方法和異步方法java

    fs模塊中提供了不少與文件操做相關的方法,例如目錄建立,文件建立,文件內容的寫入與刪除等操做。這些與文件操做相關的方法在對文件系統進行操做時大多都有同步與異步這兩種方式。     在這些方法中以Sync爲後綴的方法都是同步方法,同步方法在執行時須要當即返回操做結果,一個同步方法在操做結束以前不能夠執行以後的方法。不以Sync做爲後綴的方法都是異步的操做方法,異步方法的特色是不會阻塞程序的執行,異步方法的執行結果是做爲回調函數的參數進行返回的。在使用異步方法進行文件操做的時候,並不能保證方法執行結果返回的順序,由於每個異步方法進行文件操做時須要的時間長短是不徹底相同的,時間較短的操做方法會先返回操做結果,耗時長的異步方法後返回結果。緩存

2、對文件的讀寫操做app

  • readFile()方法和readFileSync()方法:     readFile()方法用於對文件以異步的方式進行讀操做,readFile()方法用於對文件以同步的方式進行讀操做。程序示例: (1)建立readFile.txt文本文件做爲異步方法讀取內容的文件:
使用異步的方法讀取文件內容。

    (2)建立readFileSync.txt文本文件做爲同步方法讀取內容的文件:異步

使用同步的方法讀取文件內容。

    (3)建立app.js:函數

var fs = require("fs");	//加載fs模塊

/*
*使用異步的方式讀取文件內容
*/
fs.readFile('./readFile.txt', function(err, data){
	//若是讀取文件過程當中發生錯誤則將錯誤信息輸出
	if(err){
		console.log(err);
	}else{
		console.log(data.toString());	//使用toString()方法將讀取到的內容轉換成字符串並輸出
	}
});

/*
*使用同步的方式讀取文件內容
*/
try{
	var content = fs.readFileSync('./readFileSync.txt');
	console.log(content.toString());	//使用toString()方法將讀取到的內容轉換成字符串並輸出
}catch(e){
	console.log('讀取文件內容時發生錯誤:' + e);
}

    程序運行截圖:ui

readFile()方法和readFileSync()方法

    異步讀取文件內容的readFile()方法能夠接收三個參數:編碼

readFile(filename, [options], callback);
  • filename:必選參數,表示被讀取的文件的完整路徑以及文件名稱。
  • options:可選參數,表示讀取文件時須要使用的選項:
options選項 描述
‘r’ 讀取文件。
‘r+’ 讀取並寫入文件。
‘rs’ 以同步方式讀取文件而且忽略本地文件系統緩存。
‘w’ 寫入文件,若是文件不存在就建立文件。
‘wx’ 以排他的方式寫入文件。
‘w+’ 讀取並寫入文件。
‘wx+’ 讀取並寫入文件,是以排他的方式打開文件。
‘a’ 追加寫入文件,若是文件不存在就建立文件。
‘ax’ 追加並寫入文件,以排他的方式打開文件。
‘a+’ 讀取並追加文件,若是文件不存在就建立文件。
  • callback:必選參數,表示文件讀取完成以後返回數據的回調函數。程序示例:
function(err, data){
	//回調函數體
}

  • writeFile()方法和writeFileSync()方法     writeFile()方法和writeFileSync()方法均可以向指定的文件中寫入文件內容。程序示例:
var fs = require("fs");

/*
*以異步的方式向文件中寫入內容
*/
var string = "經過異步方式寫入文件的內容";
fs.writeFile('./writeFile.txt', string, function(err){
	if(err){
		console.log('向文件中寫入內容時發生錯誤:' + err);
	}else{
		console.log('向文件中寫入內容成功。');
	}
});

    程序運行截圖:code

writeFile()方法

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

    writeFile()方法中能夠接受如下四個參數:對象

  • filename:必選參數,表示被寫入內容的文件,包括文件的完整路徑以及文件名稱。
  • data:必選參數,表示被寫入文件的內容,該參數能夠是字符串也能夠是Buffer示例對象的緩存區中的內容。
  • options:可選參數,該參數是一個對象,用於指定在寫入文件時須要使用的選項。該對象包括的屬性有flag屬性,mode屬性,encoding屬性。flag屬性表示對該文件執行何種操做,flag支持的選項有:
flag選項 說明
‘r’ 讀取文件。
‘r+’ 讀取並寫入文件。
‘rs’ 以同步方式讀取文件而且忽略本地文件系統緩存。
‘w’ 寫入文件,若是文件不存在就建立文件。
‘wx’ 以排他的方式寫入文件。
‘w+’ 讀取並寫入文件。
‘wx+’ 讀取並寫入文件,是以排他的方式打開文件。
‘a’ 追加寫入文件,若是文件不存在就建立文件。
‘ax’ 追加並寫入文件,以排他的方式打開文件。
‘a+’ 讀取並追加文件,若是文件不存在就建立文件。

    mode屬性能夠用於指定該文件被打開時的讀寫權限,默認值爲066(可讀可寫)。該屬性值是用一個3位數字表示文件或目錄全部者、所屬組以及其餘人的讀寫權限。1表示可執行權限,2表示可寫權限,4表示可讀權限。     encoding屬性能夠用於指定以何種字符編碼方式將內容寫入到文件中。默認的編碼方式是「utf8」,也能夠改爲「base64」、「ascii」或者其餘的字符編碼方式。

相關文章
相關標籤/搜索