Node.js中文件操作模塊File System的詳細(xì)介紹
File System的縮寫是fs,該模塊提供本地文件的讀寫能力。
Nodejs導(dǎo)入文件系統(tǒng)模塊(fs)語(yǔ)法如下所示:
var fs = require("fs");
異步和同步
Node.js文件系統(tǒng)(fs模塊)模塊中的方法均有異步和同步版本,例如讀取文件內(nèi)容的函數(shù)有異步的fs.readFile()和同步的fs.readFileSync() 。
異步的方法函數(shù)最后一個(gè)參數(shù)為回調(diào)函數(shù),回調(diào)函數(shù)的第一個(gè)參數(shù)包含了錯(cuò)誤信息(error)。同步則沒(méi)有回調(diào)函數(shù)。
建議大家是用異步方法,比起同步,異步方法性能更高,速度更快,而且沒(méi)有阻塞。
打開文件
語(yǔ)法如下:
fs.open(path,flags[,mode],[callback(err,data)]);//異步
path - 文件的路徑。
mode - 設(shè)置文件模式(權(quán)限),文件創(chuàng)建默認(rèn)權(quán)限為0666(可讀,可寫)。
callback - 回調(diào)函數(shù),帶有兩個(gè)參數(shù)如:callback(err,fd) 。
flags - 文件打開的行為。具體如下:
| flag | description |
| r | 以讀取模式打開文件。如果文件不存在拋出異常。 |
| r+ | 以讀寫模式打開文件。如果文件不存在拋出異常。 |
| rs | 以同步的方式讀取文件。 |
| rs+ | 以同步的方式讀取和寫入文件。 |
| w | 以寫入模式打開文件,如果文件不存在則創(chuàng)建。 |
| wx | 類似 ‘w',但是如果文件路徑存在,則文件寫入失敗。 |
| w+ | 類似 ‘w+', 但是如果文件路徑存在,則文件讀寫失敗。 |
| wx+ | 類似 ‘w+', 但是如果文件路徑存在,則文件讀寫失敗。 |
| a | 以追加模式打開文件,如果文件不存在則創(chuàng)建。 |
| ax | 類似 ‘a(chǎn)', 但是如果文件路徑存在,則文件追加失敗。 |
| a+ | 以讀取追加模式打開文件,如果文件不存在則創(chuàng)建。 |
| ax+ | 類似 ‘a(chǎn)+', 但是如果文件路徑存在,則文件讀取追加失敗。 |
獲取文件信息
語(yǔ)法如下:
fs.stat(path,[callback(err,stats)]);//異步
fs.stat(path)執(zhí)行后,會(huì)將stats類的實(shí)例返回給其回調(diào)函數(shù)??梢酝ㄟ^(guò)stats類中的提供方法判斷文件的相關(guān)屬性。
stats類中的方法有:
| 方法 | 描述 |
| stats.isFile() | 如果是文件返回 true,否則返回 false。 |
| stats.isDirectory() | 如果是目錄返回 true,否則返回 false。 |
| stats.isBlockDevice() | 如果是塊設(shè)備返回 true,否則返回 false。 |
| stats.isCharacterDevice() | 如果是字符設(shè)備返回 true,否則返回 false。 |
| stats.isSymbolicLink() | 如果是軟鏈接返回 true,否則返回 false。 |
| stats.isFIFO() | 如果是FIFO,返回true,否則返回 false。FIFO是UNIX中的一種特殊類型的命令管道。 |
| stats.isSocket() | 如果是 Socket 返回 true,否則返回 false。 |
寫入文件
語(yǔ)法如下:
fs.writeFile(filename,data[,options],[callback]);//異步 fs.writeFileSync(filename,data); //同步
如果文件存在,該方法寫入的內(nèi)容會(huì)覆蓋舊的文件內(nèi)容。
data -要寫入文件的數(shù)據(jù),可以是String(字符串)或Buffer(流)對(duì)象。
options - 該參數(shù)是一個(gè)對(duì)象,包含{encoding,mode,flag}。默認(rèn)編碼為utf8,模式為0666,flag為'w';
追加內(nèi)容
語(yǔ)法如下:
fs.appendFile(filename,data[,options],[callback]);//同步 fs.appendFileSync(filename,data[,options]); //同步
讀取文件
語(yǔ)法如下:
fs.read(fd,buffer,offset,length,position,[callback]);//異步 var buf = fs.readFile(filename,[encoding],[callback(err,data)]);//異步讀取 var buf = fs.readFileSync(filename,[encoding]);//同步讀取
fd - 通過(guò) fs.open() 方法返回的文件描述符。
buffer - 數(shù)據(jù)寫入的緩沖區(qū)。
offset - 緩沖區(qū)寫入的寫入偏移量。
length - 要從文件中讀取的字節(jié)數(shù)。
position - 文件讀取的起始位置,如果 position 的值為 null,則會(huì)從當(dāng)前文件指針的位置讀取。
encoding,編碼格式,該項(xiàng)是可選的。
關(guān)閉文件
語(yǔ)法如下:
fs.close(fd,callback);//異步
fd - 通過(guò) fs.open() 方法返回的文件描述符。
截取文件
語(yǔ)法如下:
fs.ftruncate(fd,len,callback);//異步
fd - 通過(guò) fs.open() 方法返回的文件描述符。
len - 文件內(nèi)容截取的長(zhǎng)度。
刪除文件
語(yǔ)法如下:
fs.unlink(path,callback);
創(chuàng)建目錄
語(yǔ)法如下:
fs.mkdir(path[,mode],callback);
mode - 設(shè)置目錄權(quán)限,默認(rèn)為 0777。
讀取目錄
語(yǔ)法如下:
fs.readdir(path,callback);
刪除目錄
語(yǔ)法如下:
fs.rmdir(path,callback);
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
Node.js 構(gòu)建命令行工具之實(shí)現(xiàn) ls 命令的 -a 和 
本文介紹了如何使用Node.js實(shí)現(xiàn)一個(gè)簡(jiǎn)單的命令行工具,模仿常用的ls命令,包括其-a和-l參數(shù)的功能,文章詳細(xì)講解了命令行參數(shù)的解析、文件類型的判斷、權(quán)限信息的處理、文件鏈接數(shù)和修改時(shí)間的格式化等步驟,并提供了完整的代碼實(shí)現(xiàn)2024-11-11
Node.js實(shí)現(xiàn)用戶評(píng)論社區(qū)功能(體驗(yàn)前后端開發(fā)的樂(lè)趣)
這篇文章主要介紹了Node.js實(shí)現(xiàn)用戶評(píng)論社區(qū)(體驗(yàn)前后端開發(fā)的樂(lè)趣) ,需要的朋友可以參考下2019-05-05
Nodejs極簡(jiǎn)入門教程(二):定時(shí)器
這篇文章主要介紹了Nodejs極簡(jiǎn)入門教程(二):定時(shí)器,本文講解了setTimeout、setInterval、setImmediate及process.nextTick等內(nèi)容,需要的朋友可以參考下2014-10-10
node.js中的fs.openSync方法使用說(shuō)明
這篇文章主要介紹了node.js中的fs.openSync方法使用說(shuō)明,本文介紹了fs.openSync方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
手把手教你使用TypeScript開發(fā)Node.js應(yīng)用
為了減少代碼編寫過(guò)程中出現(xiàn)的錯(cuò)誤,以及更好的維護(hù)你的項(xiàng)目,本文將手把手教你配置一個(gè)簡(jiǎn)單的開發(fā)環(huán)境來(lái)編寫Node.js的應(yīng)用程序,感興趣的小伙伴們可以參考一下2019-05-05
Node.js操作MongoDB數(shù)據(jù)庫(kù)實(shí)例分析
這篇文章主要介紹了Node.js操作MongoDB數(shù)據(jù)庫(kù),結(jié)合實(shí)例形式分析了node.js連接MongoDB數(shù)據(jù)庫(kù)以及增刪改查等相關(guān)操作技巧,需要的朋友可以參考下2020-01-01
node.js+npm的環(huán)境配置以及添加鏡像(保姆級(jí)教程)
本文主要介紹了node.js+npm的環(huán)境配置以及添加鏡像,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
詳解在node.js中require方法的加載規(guī)則
這篇文章主要介紹了詳解在node.js中require方法的加載規(guī)則,本文一步步解析了require加載規(guī)則,講述了核心的模塊,路徑形式的模塊,第三方模塊等,需要的朋友可以參考下2021-06-06

