当前位置: 首页 > 后端技术 > Node.js

深入Nodejs模块fs——文件系统操作

时间:2023-04-03 11:52:56 Node.js

node鐨刦s鏂囨。閲岄潰瀵嗗瘑楹婚夯濉炴弧浜嗗緢澶欰PI锛屾瘯绔熷畬鍏ㄦ敮鎸佸鏂囦欢绯荤粺鐨勬搷浣溿€傛枃妗f暣鐞嗙殑寰堝ソ锛屾搷浣滃熀鏈垎涓烘枃浠舵搷浣滐紝鐩綍鎿嶄綔锛屾枃浠朵俊鎭紝娴併€傜紪绋嬫柟寮忎篃鏀寔鍚屾銆佸紓姝ャ€丳romise銆傛湰鏂囪褰曟枃妗d腑娌℃湁璇︾粏鎻忚堪鐨勫嚑涓棶棰橈紝鍙互鏇村ソ鐨勮鎺s鏂囨。鐨勬€濇兂锛氭枃浠舵弿杩扮鍚屾銆佸紓姝ュ拰Promise鐩綍鍜岀洰褰曢」鏂囦欢淇℃伅娴亁xoo521.com/娆㈣繋浜ゆ祦鍙傝€冩枃浠舵弿杩扮鏂囦欢鎻忚堪绗︽槸涓€涓潪璐熸暣鏁般€傚畠鏄搷浣滅郴缁熷彲浠ユ壘鍒扮浉搴旀枃浠剁殑绱㈠紩鍊笺€傚湪fs鐨勫緢澶氫綆绾PI涓紝閮介渶瑕佹枃浠舵弿杩扮銆傚湪鏂囨。涓紝鎻忚堪绗﹂€氬父鐢╢d琛ㄧず銆備緥濡傦細fs銆傝鍙栵紙fd锛岀紦鍐插尯锛屽亸绉婚噺锛岄暱搴︼紝浣嶇疆锛屽洖璋冿級銆傝繖涓猘pi瀵瑰簲鐨勬槸锛歠s.readFile(path[,options],callback)銆傚洜涓烘搷浣滅郴缁熷鏂囦欢鎻忚堪绗︾殑鏁伴噺鏈夐檺鍒讹紝鎵€浠ュ湪瀹屾垚鏂囦欢鎿嶄綔鍚庯紝涓嶈蹇樿鍏抽棴锛歝onstfs=require("fs");fs.open("./db.json","r",(err,fd)=>{if(err)throwerr;//鏂囦欢鎿嶄綔...//瀹屾垚鍚庡叧闂枃浠秄s.close(fd,err=>{if(err)throwerr;});});鎵€鏈夋枃浠剁郴缁熺殑synchronous銆乤synchronous鍜孭romiseAPIs閮芥湁鍚屾鍜屽紓姝ヤ袱绉嶅舰寮忋€傚悓姝ュ啓涓嶅缓璁娇鐢ㄥ悓姝pi锛屼細闃诲绾跨▼銆傚皾璇晎constbuf=fs.readFileSync("./package.json");console.log(buf.toString("utf8"));}catch(error){console.log(error.message);}寮傛鍐欏紓姝ュ啓寰堝鏄撹繘鍏ュ洖璋冨湴鐙便€俧s.readFile("./package.json",(err,data)=>{if(err)throwerr;console.log(data.toString("utf8"));});锛堟帹鑽愶級Promise鍐欏湪nodev12涔嬪墠锛岄渶瑕佷娇鐢╬romise灏佽锛歠unctionreadFilePromise(path,encoding="utf8"){constpromise=newPromise((resolve,reject)=>{fs.readFile(path,(err,data)=>{if(err)returnreject(err);returnresolve(data.toString(encoding));});});杩斿洖鎵胯锛泒readFilePromise("./package.json").then(res=>console.log(res));鍦ㄨ妭鐐箆12涓紝寮曞叆浜唂sPromiseapi銆備粬浠繑鍥濸romise瀵硅薄鑰屼笉鏄娇鐢ㄥ洖璋冦€侫PI鍙€氳繃require('fs').promises璁块棶銆傚洜姝わ紝寮€鍙戞垚鏈緝浣庛€俢onstfsPromises=require("fs").鎵胯锛沠sPromises.readFile("./package.json",{encoding:"utf8",flag:"r"}).then(console.log).catch(console.error);鐩綍鍜岀洰褰曢」fs.Dir绫伙細灏佽鏂囦欢鐩綍鐩稿叧鎿嶄綔fs.Dirent绫伙細灏佽鐩綍椤圭浉鍏虫搷浣溿€備緥濡傦紝纭畾璁惧绫诲瀷锛堝瓧绗︺€佸潡銆丗IFO绛夛級銆傚畠浠箣闂寸殑鍏崇郴鐢ㄤ唬鐮佽〃绀猴細constfsPromises=require("fs").promises;asyncfunctionmain(){constdir=awaitfsPromises.opendir(".");璁ヾirent=null锛泈hile((dirent=awaitdir.read())!==null){console.log(dirent.name);}}涓昏鐨勶紙锛?鏂囦欢淇℃伅fs.Stats绫伙細灏佽浜嗘枃浠朵俊鎭浉鍏崇殑鎿嶄綔銆傚畠鍦╢s.stat()鐨勫洖璋冨嚱鏁颁腑杩斿洖銆俧s.stat("./package.json",(err,stats)=>{if(err)throwerr;console.log(stats);});娉ㄦ剰锛屽叧浜庢鏌ユ枃浠舵槸鍚﹀瓨鍦細涓嶅缓璁湪璋冪敤fs鏃朵娇鐢╢s.stat()鍦?open()銆乫s.readFile()鎴杅s.writeFile()涔嬪墠妫€鏌ユ枃浠舵槸鍚﹀瓨鍦ㄣ€傜浉鍙嶏紝搴旇鐩存帴鎵撳紑銆佽鍙栨垨鍐欏叆鏂囦欢锛屽鐞嗘枃浠朵笉鍙敤鏃跺紩鍙戠殑閿欒銆傝妫€鏌ユ枃浠舵槸鍚﹀瓨鍦ㄨ€屼笉瀵瑰叾杩涜鎿嶄綔锛屽缓璁娇鐢╢s.access()銆俁eadStream鍜學riteStream鍦╪odejs涓紝stream鏄竴涓潪甯搁噸瑕佺殑搴撱€傚緢澶氬簱鐨凙PI閮芥槸鍩轰簬stream杩涜灏佽鐨勩€傛瘮濡備笅闈㈡彁鍒扮殑fs涓殑ReadStream鍜學riteStream銆俧s鏈韩鎻愪緵浜唕eadFile鍜寃riteFile銆傚畠浠槗鐢ㄦ€х殑浠d环鏄瓨鍦ㄦ€ц兘闂锛屽畠浠細涓€娆℃€у皢鎵€鏈夊唴瀹瑰姞杞藉埌鍐呭瓨涓€備絾鏄浜庡嚑鍗冨厗瀛楄妭鐨勫ぇ鏂囦欢锛屾樉鐒朵細鏈夐棶棰樸€傞偅涔堝ぇ鏂囦欢鐨勮В鍐冲姙娉曡嚜鐒舵槸锛氫竴鐐圭偣璇诲嚭鏉ャ€傝繖闇€瑕佷娇鐢ㄦ祦銆備互readStream涓轰緥锛屼唬鐮佸涓嬶細constrs=fs.createReadStream("./package.json");letcontent="";rs.on("open",()=>{console.log("寮€濮嬮槄璇?);});rs.on("data",chunk=>{content+=chunk.toString("utf8");});rs.on("close",()=>{console.log("闃呰瀹屾瘯锛屽唴瀹逛负锛歕n",content);});鍊熷姪streampipe锛屼竴琛屽揩閫熷皝瑁呬簡涓€涓ぇ鏂囦欢鎷疯礉鍔熻兘锛氬熀纭€锛歋tream妯″潡浠嬬粛鍜屼娇鐢╪ode.js涓鍒舵枃浠舵渶蹇殑鏂规硶浣跨敤Node.js璇诲彇鐪熸闈炲父澶х殑鏁版嵁闆嗗拰鏂囦欢锛堢1閮ㄥ垎锛夝煈囨壂鎻忎簩缁寸爜鍏虫敞锛屾煡鐪嬧€滃墠绔湴鍥锯€?鈥滅畻娉曡В鍐虫柟妗堚€濓紝浣犱滑鐨勬敮鎸佹槸鎴戞洿鏂扮殑鍔ㄥ姏馃憞