Node.js中文件操作模塊File System的詳細介紹
File System的縮寫是fs,該模塊提供本地文件的讀寫能力。
Nodejs導入文件系統(tǒng)模塊(fs)語法如下所示:
var fs = require("fs");
異步和同步
Node.js文件系統(tǒng)(fs模塊)模塊中的方法均有異步和同步版本,例如讀取文件內容的函數有異步的fs.readFile()
和同步的fs.readFileSync()
。
異步的方法函數最后一個參數為回調函數,回調函數的第一個參數包含了錯誤信息(error)。同步則沒有回調函數。
建議大家是用異步方法,比起同步,異步方法性能更高,速度更快,而且沒有阻塞。
打開文件
語法如下:
fs.open(path,flags[,mode],[callback(err,data)]);//異步
path - 文件的路徑。
mode - 設置文件模式(權限),文件創(chuàng)建默認權限為0666(可讀,可寫)。
callback - 回調函數,帶有兩個參數如:callback(err,fd)
。
flags - 文件打開的行為。具體如下:
flag | description |
r | 以讀取模式打開文件。如果文件不存在拋出異常。 |
r+ | 以讀寫模式打開文件。如果文件不存在拋出異常。 |
rs | 以同步的方式讀取文件。 |
rs+ | 以同步的方式讀取和寫入文件。 |
w | 以寫入模式打開文件,如果文件不存在則創(chuàng)建。 |
wx | 類似 ‘w',但是如果文件路徑存在,則文件寫入失敗。 |
w+ | 類似 ‘w+', 但是如果文件路徑存在,則文件讀寫失敗。 |
wx+ | 類似 ‘w+', 但是如果文件路徑存在,則文件讀寫失敗。 |
a | 以追加模式打開文件,如果文件不存在則創(chuàng)建。 |
ax | 類似 ‘a', 但是如果文件路徑存在,則文件追加失敗。 |
a+ | 以讀取追加模式打開文件,如果文件不存在則創(chuàng)建。 |
ax+ | 類似 ‘a+', 但是如果文件路徑存在,則文件讀取追加失敗。 |
獲取文件信息
語法如下:
fs.stat(path,[callback(err,stats)]);//異步
fs.stat(path)
執(zhí)行后,會將stats類的實例返回給其回調函數??梢酝ㄟ^stats類中的提供方法判斷文件的相關屬性。
stats類中的方法有:
方法 | 描述 |
stats.isFile() | 如果是文件返回 true,否則返回 false。 |
stats.isDirectory() | 如果是目錄返回 true,否則返回 false。 |
stats.isBlockDevice() | 如果是塊設備返回 true,否則返回 false。 |
stats.isCharacterDevice() | 如果是字符設備返回 true,否則返回 false。 |
stats.isSymbolicLink() | 如果是軟鏈接返回 true,否則返回 false。 |
stats.isFIFO() | 如果是FIFO,返回true,否則返回 false。FIFO是UNIX中的一種特殊類型的命令管道。 |
stats.isSocket() | 如果是 Socket 返回 true,否則返回 false。 |
寫入文件
語法如下:
fs.writeFile(filename,data[,options],[callback]);//異步 fs.writeFileSync(filename,data); //同步
如果文件存在,該方法寫入的內容會覆蓋舊的文件內容。
data -要寫入文件的數據,可以是String(字符串)或Buffer(流)對象。
options - 該參數是一個對象,包含{encoding,mode,flag}。默認編碼為utf8,模式為0666,flag為'w';
追加內容
語法如下:
fs.appendFile(filename,data[,options],[callback]);//同步 fs.appendFileSync(filename,data[,options]); //同步
讀取文件
語法如下:
fs.read(fd,buffer,offset,length,position,[callback]);//異步 var buf = fs.readFile(filename,[encoding],[callback(err,data)]);//異步讀取 var buf = fs.readFileSync(filename,[encoding]);//同步讀取
fd - 通過 fs.open() 方法返回的文件描述符。
buffer - 數據寫入的緩沖區(qū)。
offset - 緩沖區(qū)寫入的寫入偏移量。
length - 要從文件中讀取的字節(jié)數。
position - 文件讀取的起始位置,如果 position 的值為 null,則會從當前文件指針的位置讀取。
encoding,編碼格式,該項是可選的。
關閉文件
語法如下:
fs.close(fd,callback);//異步
fd - 通過 fs.open()
方法返回的文件描述符。
截取文件
語法如下:
fs.ftruncate(fd,len,callback);//異步
fd - 通過 fs.open()
方法返回的文件描述符。
len - 文件內容截取的長度。
刪除文件
語法如下:
fs.unlink(path,callback);
創(chuàng)建目錄
語法如下:
fs.mkdir(path[,mode],callback);
mode - 設置目錄權限,默認為 0777。
讀取目錄
語法如下:
fs.readdir(path,callback);
刪除目錄
語法如下:
fs.rmdir(path,callback);
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關文章
利用Chrome DevTools直接調試Node.js和JavaScript的方法詳解(并行)
現在我們可以用瀏覽器調試node.js了!!!下面這篇文章主要介紹了利用Chrome DevTools直接調試Node.js和JavaScript的方法步驟,文中介紹的很詳細,需要的朋友可以參考學習,下面來一起看看吧。2017-02-02如何使用nvm實現nodejs版本管理(版本刪除,版本切換及版本添加)
這篇文章主要給大家介紹了關于如何使用nvm實現nodejs版本管理(版本刪除,版本切換及版本添加)的相關資料,nvm是一個node版本管理工具,通過它可以安裝多種node版本并且可以快速、簡單的切換node版本,需要的朋友可以參考下2023-10-10Linux Centos7.2下安裝nodejs&npm配置全局路徑的教程
今天小編就為大家分享一篇Linux Centos7.2下安裝nodejs&npm配置全局路徑的教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05詳解Wondows下Node.js使用MongoDB的環(huán)境配置
這篇文章主要介紹了詳解Wondows下Node.js使用MongoDB的環(huán)境配置,這里使用到了Mongoose驅動來讓JavaScript操作MongoDB,需要的朋友可以參考下2016-03-03