二十六、深入Node.js中的文件系统fs模块
@Author:Runsen
@Date:2020/6/8
人生最重要的不是所站的位置,而是內(nèi)心所朝的方向。只要我在每篇博文中寫得自己體會(huì),修煉身心;在每天的不斷重復(fù)學(xué)習(xí)中,耐住寂寞,練就真功,不畏艱難,奮勇前行,不忘初心,砥礪前行,人生定會(huì)有所收獲,不留遺憾 (作者:Runsen )
作者介紹:Runsen目前大三下學(xué)期,專業(yè)化學(xué)工程與工藝,大學(xué)沉迷日語(yǔ),Python, Java和一系列數(shù)據(jù)分析軟件。導(dǎo)致翹課嚴(yán)重,專業(yè)排名中下。.在大學(xué)60%的時(shí)間,都在CSDN。決定今天比昨天要更加努力。
我預(yù)計(jì)寫前端寫到五十多篇,慢慢來(lái),才能不斷地成長(zhǎng)
這次我決定寫入Node.js中的文件系統(tǒng)fs模塊。搞起來(lái),不對(duì)是讓我們hi起來(lái)。
文章目錄
- fs模塊
- 文件權(quán)限
- 讀取文件
- 文件寫入
- 文件夾創(chuàng)建
- 文件刪除
- 拷貝文件
fs模塊
嗨之前,我先去菜雞教程看看,你也可以點(diǎn)一下下面的鏈接。
菜雞教程中fs
fs模塊是內(nèi)置的模塊,Node.js 直接使用require關(guān)鍵字加載這個(gè)模塊,并把它賦值給一個(gè)變量。這樣就可以調(diào)用模塊暴露的任何方法了。
就是這么簡(jiǎn)單。
var fs = require("fs");Node.js 文件系統(tǒng)(fs 模塊)模塊中的方法有異步和同步版本,例如讀取文件內(nèi)容的函數(shù)有異步的 fs.readFile() 和同步的 fs.readFileSync()。有 Sync 后綴為同步方法,反之則為異步方法。
區(qū)別就是,同步方法在程序繼續(xù)執(zhí)行之前需要等待同步方法執(zhí)行完畢返回結(jié)果;異步方法則在被調(diào)用之后立即返回,以便程序在被調(diào)用方法完成其他任務(wù)的同時(shí)執(zhí)行其它操作,往往通過(guò)回調(diào)函數(shù)處理異步調(diào)用的結(jié)果。
異步的方法函數(shù)最后一個(gè)參數(shù)為回調(diào)函數(shù),回調(diào)函數(shù)的第一個(gè)參數(shù)包含了錯(cuò)誤信息(error)。
建議大家使用異步方法,比起同步,異步方法性能更高,速度更快,而且沒(méi)有阻塞。(來(lái)源:菜鳥(niǎo)教程)
文件權(quán)限
文件權(quán)限表:
在上圖中,我們可以看出系統(tǒng)中針對(duì)三種類型進(jìn)行權(quán)限分配,即文件所有者(自己)、文件所屬組(家人)和其他用戶(陌生人),文件操作權(quán)限又分為三種,讀、寫和執(zhí)行,數(shù)字表示為八進(jìn)制數(shù),具備權(quán)限的八進(jìn)制數(shù)分別為 4、2、1,不具備權(quán)限為 0。
因此6就是讀和寫,7就是所有權(quán)限。
讀取文件
下面代碼來(lái)源:菜鳥(niǎo)教程
示例:
假設(shè)有如下文件test.txt:
同步讀取文件
synchronization.js內(nèi)容如下:
var fs = require("fs"); var data = fs.readFileSync('test.txt'); //讀取結(jié)果是二進(jìn)制,要轉(zhuǎn)化成我們認(rèn)識(shí)的 console.log("同步讀取文件內(nèi)容為:\n" + data.toString()); console.log("程序執(zhí)行完畢");啟動(dòng)文件:
>node synchronization.js 同步讀取文件內(nèi)容為: Runsen嗨起來(lái),學(xué)互聯(lián)網(wǎng)工作技能,以后就是不去化工廠 化工沒(méi)前途,坑人專業(yè)異步讀取文件
asynchronous.js內(nèi)容如下:
var fs = require("fs") fs.readFile('test.txt', function(err,data){if(err){return console.error(err);}console.log("異步讀取文件內(nèi)容為:\n"+data.toString()); }); console.log("程序執(zhí)行完畢");啟動(dòng)文件:
>node asynchronous.js 異步讀取文件內(nèi)容為: Runsen嗨起來(lái),學(xué)互聯(lián)網(wǎng)工作技能,以后就是不去化工廠 化工沒(méi)前途,坑人專業(yè)文件寫入
下面都是用異步的,畢竟同步?jīng)]必要學(xué)習(xí)。
異步模式下寫入文件的語(yǔ)法為:
fs.writeFile(file, data[, options], callback)- file – 文件名或文件描述符
- data – 要寫入文件的數(shù)據(jù),可以是 String(字符串) 或 Buffer(緩沖) 對(duì)象
- options – 該參數(shù)是一個(gè)對(duì)象,包含 {encoding, mode, flag}。默認(rèn)編碼為utf8,模式為 0666,flag為’w’
- callback – 回調(diào)函數(shù),回調(diào)函數(shù)只包含錯(cuò)誤信息參數(shù)(err),在寫入失敗時(shí)返回
啟動(dòng)文件,write.txt中成功被寫內(nèi)容:
> node writefile.js 準(zhǔn)備寫入文件 數(shù)據(jù)寫入成功!文件夾創(chuàng)建
//文件夾創(chuàng)建 //1 -- 執(zhí)行 2 -- 寫入 4 -- 讀取 7=1+2+4 權(quán)限:創(chuàng)建的文件夾可執(zhí)行可讀可寫 fs.mkdir("img",0777,function (err) {if(err){console.log(err);}else {console.log("創(chuàng)建成功");} })文件刪除
//刪除文件 fs.unlink("write.txt",function (err) {if(err){return console.log(err);}else {console.log("刪除成功");} })拷貝文件
fs.copyFile(filenameA, filenameB,callback)第一個(gè)參數(shù)原始文件名
第二個(gè)參數(shù)要拷貝到的文件名
如果本文對(duì)你有幫助,大家可以點(diǎn)贊轉(zhuǎn)發(fā)一波,有錯(cuò)誤大家可以評(píng)論指出,感謝!
大家繼續(xù)加油,未來(lái)可期!Runsen的征途是星辰大海!
總結(jié)
以上是生活随笔為你收集整理的二十六、深入Node.js中的文件系统fs模块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 柏尔实木定制地板质量如何?求解答。
- 下一篇: 九江市烟机灶具哪个品牌好点?