Node中的文件操作
fs模塊是node非常重要的模塊,能體現(xiàn)出node的優(yōu)勢(shì)。
因?yàn)槌鲇诎踩呗?,如果javasript能隨意操作文件,那你打開任何一個(gè)網(wǎng)頁(yè),都會(huì)有信息泄露,和中毒等風(fēng)險(xiǎn)。因此作為使用javascript語(yǔ)言的后臺(tái)nodejs可以為前端工程師提供文件操作方式。
當(dāng)今異步操作橫行編程界,node也是以異步編程為大家所稱道。在node的文件操作中也是以異步為主,同步為輔(雖然存在感低,但也是存在的)。
異步方法:readFile(......),writeFile(......),appendFile(......),open(......) ;
同步方法:在異步基礎(chǔ)上加sync如readFileSync(..)。
如同Java中的文件操作一樣,在Node中,也提供了針對(duì)文件的操作。在Node中,文件操作默認(rèn)使用的是UTF-8編碼,這意味著我們無(wú)須再去處理中文亂碼的問(wèn)題。
針對(duì)文件操作,Node提供了一個(gè)fs模塊來(lái)支持我們操作文件,fs模塊是對(duì)標(biāo)準(zhǔn)POSIX函數(shù)的簡(jiǎn)單封裝。在使用這個(gè)模塊時(shí),我們只需要聲明引用即可。
var fs= require("fs");
然后我們就可以調(diào)用fs模塊中的方法進(jìn)行文件操作。
writeFile:異步向文件中寫入數(shù)據(jù),如果文件不存在,則會(huì)自動(dòng)創(chuàng)建文件;如果文件存在,則會(huì)把文件替換掉。如fs.writeFile(文件名,數(shù)據(jù),回調(diào)函數(shù)(err)),其中數(shù)據(jù)參數(shù)可以是String或者Buffer類型,編碼格式是可選的,默認(rèn)是UTF-8,回調(diào)函數(shù)只有一個(gè)參數(shù)err。
appenFile:向文件中追加內(nèi)容。如果不存在該文件,則會(huì)自動(dòng)創(chuàng)建新文件;如果已經(jīng)存在,那就直接在文件尾部追加數(shù)據(jù)。如fs.appendFile(文件名,數(shù)據(jù),編碼,回調(diào)函數(shù)(err)),編碼格式默認(rèn)為UTF-8。
exists:判斷文件是否存在。如fs.exists(文件,回調(diào)函數(shù)(exists)),該方法的回調(diào)函數(shù)只有一個(gè)參數(shù),是一個(gè)boolean類型,通過(guò)該值來(lái)判斷是否存在。
rename:用來(lái)重命名文件,也可以復(fù)制文件到指定的目錄下。如果是重命名文件,則是fs.rename(舊文件名,新文件名,回調(diào)函數(shù)(err));如果是復(fù)制文件,則是fs.rename(舊文件的路徑,新路徑,回調(diào)函數(shù)(err)),注:復(fù)制文件時(shí),需要在路徑后面加上文件名,否則會(huì)出現(xiàn)錯(cuò)誤。
readFile:見(jiàn)名之意,這個(gè)方法是用來(lái)讀取文件的,把文件讀取到緩沖區(qū)中,該方法是非阻塞的。fs.readFile(文件名,回調(diào)函數(shù)(err,data))。
readFileSync:這個(gè)方法也是用來(lái)讀取文件的,把文件讀取到緩沖區(qū)中,但是這個(gè)方法是線程阻塞的。fs.readFileSync(文件名)。
read:不斷地將文件中的一小塊內(nèi)容讀入緩存區(qū),最后從該緩存區(qū)中讀取文件內(nèi)容。fs.read(fd, buffer, offset, length, position, callback)。
unlink:刪除文件,不是用來(lái)刪除文件夾。fs.unlink(文件,回調(diào)函數(shù)(err))。
mkdir:創(chuàng)建目錄。fs.mkdir(路徑,權(quán)限,回調(diào)函數(shù)(err)):路徑是新創(chuàng)建的目錄;權(quán)限是可選參數(shù),并且只在Linux目錄下有效,默認(rèn)是0777,即所有人都擁有讀寫執(zhí)行的權(quán)限;回調(diào)函數(shù)則是在錯(cuò)誤發(fā)生時(shí),錯(cuò)誤信息會(huì)傳遞給回調(diào)函數(shù)的err參數(shù)。
rmdir:刪除目錄,fs.rmdir(路徑,回調(diào)函數(shù)(err)),刪除目錄時(shí),需要確定被刪除的目錄是空目錄,否則無(wú)法刪除。
readdir:讀取指定目錄下所有的文件,fs.readdir(目錄,回調(diào)函數(shù)(err,files)):回調(diào)函數(shù)中的files是一個(gè)數(shù)組,這個(gè)數(shù)組是目錄中所包含的文件名稱。
在Node中,還有很多的文件操作方法,詳情可借鑒http://www.runoob.com/nodejs/nodejs-fs.html