摘要:參數說明文件描述符,必須接收方法中的回調函數返回的第二個參數。引入模塊打開文件讀取文件打印出中存入的數據關閉文件運行結果如下五目錄操作創建目錄使用創建目錄,是需要創建的目錄,是目錄的權限默認是,是回調函數。
一、同步和異步
使用require("fs")載入fs模塊,模塊中所有方法都有同步和異步兩種形式。
異步方法中回調函數的第一個參數總是留給異常參數(exception),如果方法成功完成,該參數為null或undefined。
異步寫法demo:有一個回調函數。
var fs = require("fs"); // 載入fs模塊 fs.unlink("/tmp/shiyanlou", function(err) { if (err) { throw err; } console.log("成功刪除了 /tmp/shiyanlou"); });
同步寫法demo:
var fs = require("fs"); fs.unlinkSync("/tmp/shiyanlou"); // Sync 表示是同步方法 console.log("成功刪除了 /tmp/shiyanlou");
同步方法執行完并返回結果后,才能執行后續的代碼。而異步方法采用回調函數接收返回結果,可以立即執行后續代碼。
二、readFile讀取文件
fs.readFile(filename,[option],callback) 方法讀取文件。
參數說明:
filename String 文件名
option Object
- encoding String |null default=null - flag String default="r"
callback Function
demo
有一個文本文件text.txt內容如下
line one line two
和text.txt相同目錄中有一個readfile.js,內容如下
readFile的回調函數接收兩個參數,err是讀取文件出錯時觸發的錯誤對象,data是從文件讀取的數據。
var fs = require("fs"); // 引入fs模塊 fs.readFile("./test.txt", function(err, data) { // 讀取文件失敗/錯誤 if (err) { throw err; } // 讀取文件成功 console.log(data); });
$ node readfile.js運行結果
// 使用toString() fs.readFile("./test.txt", function(err, data) { // 讀取文件失敗/錯誤 if (err) { throw err; } // 讀取文件成功 console.log(data.toString()); });
設置utf-8編碼寫法:
// 設置編碼格式 fs.readFile("./test.txt", "utf-8", function(err, data) { // 讀取文件失敗/錯誤 if (err) { throw err; } // 讀取文件成功 console.log("utf-8: ", data.toString()); //直接用console.log(data);也可以 });
readFile同步的寫法就是沒有回調函數:fs.readFileSync(filename,[options])。
三、WriteFile寫入文件
使用fs.writeFile(filename,data,[options],callback)寫入內容到文件。
參數說明:
filename String 文件名
data String|buffer
option Object
- encoding String |nulldefault="utf-8" - mode Number default=438(aka 0666 in Octal) - flag Stringdefault="w"
callback Function
demo
var fs = require("fs"); // 引入fs模塊 // 寫入文件內容(如果文件不存在會創建一個文件) // 寫入時會先清空文件 fs.writeFile("./test2.txt", "test test", function(err) { if (err) { throw err; } console.log("Saved."); // 寫入成功后讀取測試 fs.readFile("./test2.txt", "utf-8", function(err, data) { if (err) { throw err; } console.log(data); }); });
因為默認flag="w"是寫,會清空文件,想要追加,可以傳遞一個flag參數,如下。
var fs = require("fs"); // 引入fs模塊 // 寫入文件內容(如果文件不存在會創建一個文件) // 傳遞了追加參數 { "flag": "a" } fs.writeFile("./test2.txt", "test test", { "flag": "a" }, function(err) { if (err) { throw err; } console.log("Saved."); // 寫入成功后讀取測試 fs.readFile("./test2.txt", "utf-8", function(err, data) { if (err) { throw err; } console.log(data); }); });
flag傳值,r代表讀取文件,w代表寫文件,a代表追加。
四、使用fs.read和fs.write讀寫文件
fs.read和fs.write功能類似fs.readFile和fs.writeFile(),但提供更底層的操作,實際應用中多用fs.readFile和fs.writeFile。
使用fs.read和fs.write讀寫文件需要使用fs.open打開文件和fs.close關閉文件。
1、fs.read()
先介紹fs.open。
fs.open(path,flags,[mode],callback)方法用于打開文件,以便fs.read()讀取。
參數說明:
path 文件路徑
flags打開文件的方式
[mode] 是文件的權限(可行參數,默認值是0666)
callback 回調函數
flags值及說明如下:
r :讀取文件,文件不存在時報錯; r+ :讀取并寫入文件,文件不存在時報錯; rs :以同步方式讀取文件,文件不存在時報錯; rs+ :以同步方式讀取并寫入文件,文件不存在時報錯; w :寫入文件,文件不存在則創建,存在則清空; wx :和w一樣,但是文件存在時會報錯; w+ :讀取并寫入文件,文件不存在則創建,存在則清空; wx+ :和w+一樣,但是文件存在時會報錯; a :以追加方式寫入文件,文件不存在則創建; ax :和a一樣,但是文件存在時會報錯; a+ :讀取并追加寫入文件,文件不存在則創建; ax+ :和a+一樣,但是文件存在時會報錯。
fs.close(fd,[callback])
用于關閉文件,fd是所打開文件的文件描述符。
fs.read(fd,buffer,offset,length,position,callback)接收6個參數。
參數說明:
fd 文件描述符,必須接收fs.open()方法中的回調函數返回的第二個參數。
buffer 是存放讀取到的數據的Buffer對象。
offset 指定 向buffer中存放數據的起始位置。
length 指定 讀取文件中數據的字節數。
position 指定 在文件中讀取文件內容的起始位置。
callback 回調函數,參數如下
- err 用于拋出異常 - bytesRead 從文件中讀取內容的實際字節數。 - buffer 被讀取的緩存區對象。
demo: read.js內容如下
var fs = require("fs"); // 引入fs模塊 // 打開文件 fs.open("./testread.txt", "r", function(err, fd) { if (err) { throw err; } console.log("open file success."); var buffer = new Buffer(255); // 讀取文件 fs.read(fd, buffer, 0, 10, 0, function(err, bytesRead, buffer) { if (err) { throw err; } // 打印出buffer中存入的數據 console.log(bytesRead, buffer.slice(0, bytesRead).toString()); // 關閉文件 fs.close(fd); }); });
運行結果
2、fs.write()
fs.read(fd,buffer,offset,length[,position],callback(err,bytesWritten,buffer))接收6個參數。
參數說明:
fd 文件描述符,必須接收fs.open()方法中的回調函數返回的第二個參數。
buffer 是存放 將被寫入的數據,buffer尺寸的大小設置最好是8的倍數,效率較高。
offset buffer寫入的偏移量。
length (integer)指定 寫入文件中數據的字節數。
position (integer) 指定 在寫入文件內容的起始位置。
callback 回調函數,參數如下
- err 用于拋出異常 - bytesWritten從文件中讀取內容的實際字節數。 - buffer 被讀取的緩存區對象。
var fs = require("fs"); // 引入fs模塊 // 打開文件 fs.open("./testwrite.txt", `w`, function(err, fd) { if (err) { throw err; } console.log("open file success."); var buffer = new Buffer("shiyanlou"); // 讀取文件 fs.write(fd, buffer, 0, 6, 0, function(err, bytesWritten, buffer) { if (err) { throw err; } console.log("write success."); // 打印出buffer中存入的數據 console.log(bytesWritten, buffer.slice(0, bytesWritten).toString()); // 關閉文件 fs.close(fd); }); });
運行結果如下:
五、目錄操作
1、創建目錄
使用fs.mkdir(path,[mode],callback)創建目錄,path是需要創建的目錄,[mode]是目錄的權限(默認是0777),callback是回調函數。
demo:mkdir.js內容如下
var fs = require("fs"); // 引入fs模塊 // 創建 newdir 目錄 fs.mkdir("./newdir", function(err) { if (err) { throw err; } console.log("make dir success."); });
刪除目錄可以用fs.rmdir(path,callback);但是只能刪除空目錄。
2、讀取目錄
使用fs.readdir(path,callback)讀取文件目錄。
demo:readdir.js內容如下
var fs = require("fs"); // 引入fs模塊 fs.readdir("./newdir", function(err, files) { if (err) { throw err; } // files是一個數組 // 每個元素是此目錄下的文件或文件夾的名稱 console.log(files); });
結果輸出該目錄有哪些目錄和文件。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90769.html
摘要:如果說用一句話來概括那就是它開啟了服務器端語言。系列的文章并不會從一開始長篇概論的講的歷史,安裝,以及其他很瑣碎的事情。只會專門介紹關于或者準確來講是關于的敏捷開發。性能不對已有的特性進行二次抽象,我們只是在它之上擴展了應用所需的基本功能。 如果說用一句話來概括Node那就是:它開啟了JavaScript服務器端語言。 Node系列的文章并不會從一開始長篇概論的講Node的歷史,安裝,...
摘要:因為進程退出之后將不再執行事件循環,所有只有那些沒有回調函數的代碼才會被執行。此外,創建的回調函數具有隔離性,他們之間不會相互影響。我們來看的一個簡單例子,他創建了一個子進程,第一個參數是一個命令,第二個參數是回調函數,處理返回結果。 雖然node對操作系統做了很多抽象的工作,但是你還是可以直接和他交互,比如和系統中已經存在的進程進行交互,創建工作子進程。node是一個用于事件循環的線...
摘要:事件的監聽與事件的觸發事件一事件機制的實現中大部分的模塊,都繼承自模塊。從另一個角度來看,事件偵聽器模式也是一種事件鉤子的機制,利用事件鉤子導出內部數據或狀態給外部調用者。的核心就是事件發射與事件監聽器功能的封裝。 nodejs事件的監聽與事件的觸發 nodejs事件(Events)showImg(https://segmentfault.com/img/bV0Sqi?w=692&h=...
摘要:中的模塊在中有模塊的概念,類似于語言中的頭文件,都是函數庫。靈活運用模塊可以非常便捷的操作后端操作前端。最好在運行文件的同個文件夾下下載方便使用,也可以在上級文件夾下載全局調用。他可以為文檔增刪改查。 nodeJS中的模塊 在nodeJS中有模塊的概念,類似于C語言中的頭文件,都是函數庫。靈活運用模塊可以非常便捷的操作后端操作前端。而在nodeJS中引入模塊要使用require();這...
摘要:異步文件系統不會阻塞程序的執行,而是在操作完成時,通過回調函數將結果返回。 文件系統(File System): 在Node中,文件系統的交互是非常重要的,服務器的本質就是將本地的文件發送給客戶端, Node通過fs模塊來和文件系統進行交互,該模塊提供了一些標準的文件訪問API類打開、讀取、寫入文件、以及與其交互。 要是用fs模塊,首先要從核心模塊中加載; 使用 const fs= ...
閱讀 1481·2021-11-17 09:33
閱讀 1260·2021-10-11 10:59
閱讀 2892·2021-09-30 09:48
閱讀 1905·2021-09-30 09:47
閱讀 3024·2019-08-30 15:55
閱讀 2337·2019-08-30 15:54
閱讀 1493·2019-08-29 15:25
閱讀 1646·2019-08-29 10:57