nodejs 中的讀取文件fs模塊示例詳解
什么是 nodejs?
Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境,nodejs 允許 javascript 代碼運(yùn)行在服務(wù)端。
nodejs 不是一門(mén)新的編程語(yǔ)言,nodejs是在服務(wù)端運(yùn)行 javascript 的運(yùn)行環(huán)境
運(yùn)行環(huán)境:寫(xiě)得程序想要運(yùn)行必須要有對(duì)應(yīng)的運(yùn)行環(huán)境
- php 代碼必須要有 apache 服務(wù)器
- 在 web 端,瀏覽器就是 javascript 的運(yùn)行環(huán)境
- 在服務(wù)端,nodejs 就是 javascript 的運(yùn)行環(huán)境
javascript 并不只是能運(yùn)行在瀏覽器端,瀏覽器端能夠運(yùn)行 js 是因?yàn)闉g覽器有 js 解析器,因此只需要有 js 解析器,任何軟件都可以運(yùn)行 js。
nodejs 可以在服務(wù)端運(yùn)行 js,因?yàn)?nodejs 是基于 chrome v8 的 js 引擎。
global 模塊-全局變量
Node.js 中的全局對(duì)象是 global, 類(lèi)似于瀏覽器中的window。
常用的global屬性
console
: 用于打印日志setTimeout
/clearTimeout
: 設(shè)置清除延時(shí)器setInterval
/clearInterval
: 設(shè)置清除定時(shí)器__dirname
: 當(dāng)前文件的路徑,不包括文件名__filename
: 獲取當(dāng)前文件的路徑,包括文件名
與模塊化相關(guān)的,模塊化的時(shí)候會(huì)用到
require
exports
module
fs模塊
fs 模塊是 nodejs 中最常用的一個(gè)模塊,因此掌握 fs 模塊非常的有必要,fs 模塊的方法非常多,用到了哪個(gè)查哪個(gè)即可。
注意:
除了 global 模塊中的內(nèi)容可以直接使用,其他模塊都是需要加載的。 fs 模塊不是全局的,不能直接使用。因此需要導(dǎo)入才能使用。
const fs = require("fs");
讀取文件
語(yǔ)法:fs.readFile(path[, options], callback)
方式一:不傳編碼參數(shù)
//參數(shù)1: 文件的名字 //參數(shù)2: 讀取文件的回調(diào)函數(shù) //參數(shù)1:錯(cuò)誤對(duì)象,如果讀取失敗,err會(huì)包含錯(cuò)誤信息,如果讀取成功,err是null //參數(shù)2:讀取成功后的數(shù)據(jù)(是一個(gè)Buffer對(duì)象) fs.readFile("data.txt", function(err, data){ console.log(err); console.log(data); });
方式二:傳編碼參數(shù)
//參數(shù)1: 文件的路徑 //參數(shù)2: 編碼,如果設(shè)置了,返回一個(gè)字符串,如果沒(méi)有設(shè)置,會(huì)返回一個(gè)buffer對(duì)象 //參數(shù)3: 回調(diào)函數(shù) fs.readFile("data.txt", "utf8",function(err, data){ console.log(err); console.log(data); });
關(guān)于 Buffer 對(duì)象
- Buffer 對(duì)象是 Nodejs 用于處理二進(jìn)制數(shù)據(jù)的。
- 其實(shí)任意的數(shù)據(jù)在計(jì)算機(jī)底層都是二進(jìn)制數(shù)據(jù),因?yàn)橛?jì)算機(jī)只認(rèn)識(shí)二進(jìn)制。
- 所以讀取任意的文件,返回的結(jié)果都是二進(jìn)制數(shù)據(jù),即 Buffer 對(duì)象
- Buffer 對(duì)象可以調(diào)用 toString() 方法轉(zhuǎn)換成字符串。
寫(xiě)文件
語(yǔ)法:fs.writeFile(file, data[, options], callback)
//參數(shù)1:寫(xiě)入的文件名(如果文件不存在,會(huì)自動(dòng)創(chuàng)建) //參數(shù)2:寫(xiě)入的文件內(nèi)容(注意:寫(xiě)入的內(nèi)容會(huì)覆蓋以前的內(nèi)容) //參數(shù)3:寫(xiě)文件后的回調(diào)函數(shù) fs.writeFile("2.txt", "hello world, 我是一個(gè)中國(guó)人", function(err){ if(err) { return console.log("寫(xiě)入文件失敗", err); } console.log("寫(xiě)入文件成功"); });
注意:
寫(xiě)文件的時(shí)候,會(huì)把原來(lái)的內(nèi)容給覆蓋掉
追加文件
語(yǔ)法:fs.appendFile(path, data[, options], callback)
//參數(shù)1:追加的文件名(如果文件不存在,會(huì)自動(dòng)創(chuàng)建) //參數(shù)2:追加的文件內(nèi)容(注意:寫(xiě)入的內(nèi)容會(huì)覆蓋以前的內(nèi)容) //參數(shù)3:追加文件后的回調(diào)函數(shù) fs.appendFile("2.txt", "我是追加的內(nèi)容", function(err){ if(err) { return console.log("追加文件內(nèi)容失敗"); } console.log("追加文件內(nèi)容成功"); })
文件同步與異步的說(shuō)明
fs 中所有的文件操作,都提供了異步和同步兩種方式
異步方式: 不會(huì)阻塞代碼的執(zhí)行
//異步方式 var fs = require("fs"); console.log(111); fs.readFile("2.txt", "utf8", function(err, data){ if(err) { return console.log("讀取文件失敗", err); } console.log(data); }); console.log("222");
同步方式: 會(huì)阻塞代碼的執(zhí)行
//同步方式 console.log(111); var result = fs.readFileSync("2.txt", "utf-8"); console.log(result); console.log(222);
總結(jié):
同步操作使用雖然簡(jiǎn)單,但是會(huì)影響性能,因此盡量使用異步方法,尤其是在工作過(guò)程中。
以上就是nodejs 中的讀取文件fs模塊示例詳解的詳細(xì)內(nèi)容,更多關(guān)于nodejs 讀取文件fs模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
node+multer實(shí)現(xiàn)圖片上傳的示例代碼
這篇文章主要介紹了node+multer實(shí)現(xiàn)圖片上傳的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02npm報(bào)錯(cuò)"A?complete?log?of?this?run?can?be?found?
這篇文章主要給大家介紹了關(guān)于npm報(bào)錯(cuò)"A?complete?log?of?this?run?can?be?found?in:"的解決辦法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-04-04NodeJS 將文件夾按照存放路徑變成一個(gè)對(duì)應(yīng)的JSON的方法
這篇文章主要介紹了NodeJS 將文件夾按照存放路徑變成一個(gè)對(duì)應(yīng)的JSON的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10node.js中的path.dirname方法使用說(shuō)明
這篇文章主要介紹了node.js中的path.dirname方法使用說(shuō)明,本文介紹了path.dirname的方法說(shuō)明、語(yǔ)法、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12Node.js使用Koa搭建 基礎(chǔ)項(xiàng)目
時(shí)下前端工程師有很多人比較關(guān)注NodeJs以及express 框架或者Koa 框架之類(lèi)的新技術(shù)。難得我最近閑時(shí)較多,利用一下舊歷新年尚未正式到來(lái)的這片閑暇,也來(lái)涉足其中,一窺其中奧妙。2018-01-01NodeJs實(shí)現(xiàn)跨域WebSocket即時(shí)通訊加強(qiáng)版
這篇文章主要為大家介紹了NodeJs實(shí)現(xiàn)跨域WebSocket即時(shí)通訊加強(qiáng)版示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11新手必須知的Node.js 4個(gè)JavaScript基本概念
本文介紹了4個(gè)基本JavaScript概念,它是你學(xué)習(xí)node.js所必需要掌握,下面就讓我們來(lái)看一下具體是哪4個(gè)基本JavaScript概念2018-09-09詳解NodeJs支付寶移動(dòng)支付簽名及驗(yàn)簽
本文主要介紹了NodeJs支付寶移動(dòng)支付簽名及驗(yàn)簽的方法,具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01