最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs中的讀取文件fs與文件路徑path解析

 更新時(shí)間:2022年08月04日 10:38:47   作者:燈光下的投影  
這篇文章主要介紹了nodejs中的讀取文件fs與文件路徑path解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

什么是nodejs?

Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境,nodejs允許javascript代碼運(yùn)行在服務(wù)端

1. nodejs不是一門(mén)新的編程語(yǔ)言,nodejs是在服務(wù)端運(yùn)行javascript的運(yùn)行環(huán)境

2. 運(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)境

2. javascript并不只是能運(yùn)行在瀏覽器端,瀏覽器端能夠運(yùn)行js是因?yàn)闉g覽器有js解析器,因此只需要有js解析器,任何軟件都可以運(yùn)行js。

3. nodejs可以在服務(wù)端運(yùn)行js,因?yàn)閚odejs是基于chrome v8的js引擎。

4.下載地址:https://nodejs.org/en/download/

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è)模塊,因此掌握f(shuō)s模塊非常的有必要,fs模塊的方法非常多,用到了哪個(gè)查哪個(gè)即可。

文檔地址:http://nodejs.cn/api/fs.html

注意:

  • 除了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ì)象

1. Buffer對(duì)象是Nodejs用于處理二進(jìn)制數(shù)據(jù)的。

2. 其實(shí)任意的數(shù)據(jù)在計(jì)算機(jī)底層都是二進(jìn)制數(shù)據(jù),因?yàn)橛?jì)算機(jī)只認(rèn)識(shí)二進(jìn)制。

3. 所以讀取任意的文件,返回的結(jié)果都是二進(jìn)制數(shù)據(jù),即Buffer對(duì)象

4. 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ò)程中。

path模塊

路徑操作的問(wèn)題

在讀寫(xiě)文件的時(shí)候,文件路徑可以寫(xiě)相對(duì)路徑或者絕對(duì)路徑

//data.txt是相對(duì)路徑,讀取當(dāng)前目錄下的data.txt, 相對(duì)路徑相對(duì)的是指向node命令的路徑
//如果node命令不是在當(dāng)前目錄下執(zhí)行就會(huì)報(bào)錯(cuò), 在當(dāng)前執(zhí)行node命令的目錄下查找data.txt,找不到
fs.readFile("data.txt", "utf8", function(err, data) {
? if(err) {
? ? console.log("讀取文件失敗", err);
? }
?
? console.log(data);
});

相對(duì)路徑:相對(duì)于執(zhí)行node命令的路徑

絕對(duì)路徑:__dirname: 當(dāng)前文件的目錄,__filename: 當(dāng)前文件的目錄,包含文件名

path模塊的常用方法

關(guān)于路徑,在linux系統(tǒng)中,路徑分隔符使用的是/,但是在windows系統(tǒng)中,路徑使用的\  

在我們拼寫(xiě)路徑的時(shí)候會(huì)帶來(lái)很多的麻煩,經(jīng)常會(huì)出現(xiàn)windows下寫(xiě)的代碼,在linux操作系統(tǒng)下執(zhí)行不了,path模塊就是為了解決這個(gè)問(wèn)題而存在的。

常用方法:

path.join();//拼接路徑
?
//windows系統(tǒng)下
> path.join("abc","def","gg", "index.html")
"abc\def\gg\a.html"
?
//linux系統(tǒng)下
> path.join("abc","def","gg", "index.html")
'abc/def/gg/index.html'
?
path.basename(path[, ext])?? ?返回文件的最后一部分
path.dirname(path)?? ?返回路徑的目錄名
path.extname(path)?? ?獲取路徑的擴(kuò)展名
?
var path = require("path");
var temp = "abc\\def\\gg\\a.html";
console.log(path.basename(temp));//a.html
console.log(path.dirname(temp));//abc\def\gg
console.log(path.extname(temp));//.html

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Nodejs封裝類(lèi)似express框架的路由實(shí)例詳解

    Nodejs封裝類(lèi)似express框架的路由實(shí)例詳解

    在本篇文章里小編給大家整理的是關(guān)于Nodejs封裝類(lèi)似express框架的路由實(shí)例內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2020-01-01
  • node.js突破nginx防盜鏈機(jī)制,下載圖片案例分析

    node.js突破nginx防盜鏈機(jī)制,下載圖片案例分析

    這篇文章主要介紹了node.js突破nginx防盜鏈機(jī)制,下載圖片的方法,結(jié)合具體案例形式分析了防盜鏈的相關(guān)原理與node.js使用axios庫(kù)下載防盜鏈圖片的相關(guān)操作技巧,需要的朋友可以參考下
    2023-04-04
  • npm?ERR!Cannot?read?properties?of?null(reading?'pickAlgorithm')報(bào)錯(cuò)問(wèn)題解決

    npm?ERR!Cannot?read?properties?of?null(reading?'p

    這篇文章主要給大家介紹了關(guān)于npm?ERR!Cannot?read?properties?of?null(reading?'pickAlgorithm')報(bào)錯(cuò)問(wèn)題的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-03-03
  • socket.io學(xué)習(xí)教程之基礎(chǔ)介紹(一)

    socket.io學(xué)習(xí)教程之基礎(chǔ)介紹(一)

    socket.io提供了基于事件的實(shí)時(shí)雙向通訊,所以下面這篇文章主要介紹了關(guān)于socket.io的相關(guān)資料,主要介紹了學(xué)習(xí)socket.io的基礎(chǔ)知識(shí),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-04-04
  • node.js中的http.request方法使用說(shuō)明

    node.js中的http.request方法使用說(shuō)明

    這篇文章主要介紹了node.js中的http.request方法使用說(shuō)明,本文介紹了http.request的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼需要的朋友可以參考下
    2014-12-12
  • Mac 安裝 nodejs方法(圖文詳細(xì)步驟)

    Mac 安裝 nodejs方法(圖文詳細(xì)步驟)

    這篇文章主要介紹了Mac 安裝 nodejs方法(圖文詳細(xì)步驟),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • nodejs通過(guò)phantomjs實(shí)現(xiàn)下載網(wǎng)頁(yè)

    nodejs通過(guò)phantomjs實(shí)現(xiàn)下載網(wǎng)頁(yè)

    這篇文章主要介紹了nodejs通過(guò)phantomjs實(shí)現(xiàn)下載網(wǎng)頁(yè)的方法,有需要的小伙伴可以參考下。
    2015-05-05
  • node實(shí)現(xiàn)的爬蟲(chóng)功能示例

    node實(shí)現(xiàn)的爬蟲(chóng)功能示例

    這篇文章主要介紹了node實(shí)現(xiàn)的爬蟲(chóng)功能,結(jié)合實(shí)例形式分析了nodejs實(shí)現(xiàn)爬蟲(chóng)功能的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2018-05-05
  • 在koa中簡(jiǎn)單使用Websocket連接的方法示例

    在koa中簡(jiǎn)單使用Websocket連接的方法示例

    本文主要介紹了在koa中簡(jiǎn)單使用Websocket連接的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 如何使用puppet替換文件中的string

    如何使用puppet替換文件中的string

    今天小編就為大家分享一篇關(guān)于如何使用puppet替換文件中的string,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12

最新評(píng)論

永州市| 扶沟县| 象山县| 泌阳县| 陇西县| 文水县| 石台县| 囊谦县| 额济纳旗| 台江县| 玉山县| 乃东县| 土默特左旗| 云阳县| 报价| 绥化市| 平顶山市| 石棉县| 德格县| 红桥区| 庆元县| 如东县| 法库县| 昭苏县| 砚山县| 永德县| 濮阳市| 阳城县| 定结县| 郓城县| 镇原县| 淮阳县| 合川市| 邯郸县| 阳江市| 壶关县| 大邑县| 台东市| 井冈山市| 西吉县| 古浪县|