欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

什么是nodejs?

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

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

2. 運行環(huán)境:寫得程序想要運行必須要有對應(yīng)的運行環(huán)境

  • php代碼必須要有apache服務(wù)器
  • 在web端,瀏覽器就是javascript的運行環(huán)境
  • 在服務(wù)端,nodejs就是javascript的運行環(huán)境

2. javascript并不只是能運行在瀏覽器端,瀏覽器端能夠運行js是因為瀏覽器有js解析器,因此只需要有js解析器,任何軟件都可以運行js。

3. nodejs可以在服務(wù)端運行js,因為nodejs是基于chrome v8的js引擎。

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

global模塊-全局變量

Node.js 中的全局對象是 global, 類似于瀏覽器中的window

常用的global屬性

  • console: 用于打印日志
  • setTimeout/clearTimeout: 設(shè)置清除延時器
  • setInterval/clearInterval: 設(shè)置清除定時器
  • __dirname: 當前文件的路徑,不包括文件名
  • __filename: 獲取當前文件的路徑,包括文件名

//與模塊化相關(guān)的,模塊化的時候會用到

  • require
  • exports
  • module

fs模塊

fs模塊是nodejs中最常用的一個模塊,因此掌握fs模塊非常的有必要,fs模塊的方法非常多,用到了哪個查哪個即可。

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

注意:

  • 除了global模塊中的內(nèi)容可以直接使用,其他模塊都是需要加載的。
  • fs模塊不是全局的,不能直接使用。因此需要導(dǎo)入才能使用。
const fs = require("fs");

讀取文件

語法:fs.readFile(path[, options], callback)

方式一:不傳編碼參數(shù)

//參數(shù)1: 文件的名字
//參數(shù)2: 讀取文件的回調(diào)函數(shù)
? //參數(shù)1:錯誤對象,如果讀取失敗,err會包含錯誤信息,如果讀取成功,err是null
? //參數(shù)2:讀取成功后的數(shù)據(jù)(是一個Buffer對象)
fs.readFile("data.txt", function(err, data){
? console.log(err);
? console.log(data);
});

方式二:傳編碼參數(shù)

//參數(shù)1: 文件的路徑
//參數(shù)2: 編碼,如果設(shè)置了,返回一個字符串,如果沒有設(shè)置,會返回一個buffer對象
//參數(shù)3: 回調(diào)函數(shù)
fs.readFile("data.txt", "utf8",function(err, data){
? console.log(err);
? console.log(data);
});

關(guān)于Buffer對象

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

2. 其實任意的數(shù)據(jù)在計算機底層都是二進制數(shù)據(jù),因為計算機只認識二進制。

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

4. Buffer對象可以調(diào)用toString()方法轉(zhuǎn)換成字符串。

寫文件

語法:fs.writeFile(file, data[, options], callback)

//參數(shù)1:寫入的文件名(如果文件不存在,會自動創(chuàng)建)
//參數(shù)2:寫入的文件內(nèi)容(注意:寫入的內(nèi)容會覆蓋以前的內(nèi)容)
//參數(shù)3:寫文件后的回調(diào)函數(shù)
fs.writeFile("2.txt", "hello world, 我是一個中國人", function(err){
? if(err) {
? ? return console.log("寫入文件失敗", err);
? }
? console.log("寫入文件成功");
});

注意:

寫文件的時候,會把原來的內(nèi)容給覆蓋掉

追加文件

語法:fs.appendFile(path, data[, options], callback)

//參數(shù)1:追加的文件名(如果文件不存在,會自動創(chuàng)建)
//參數(shù)2:追加的文件內(nèi)容(注意:寫入的內(nèi)容會覆蓋以前的內(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)容成功");
})

文件同步與異步的說明

fs中所有的文件操作,都提供了異步和同步兩種方式

異步方式:不會阻塞代碼的執(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");

同步方式:會阻塞代碼的執(zhí)行

//同步方式
console.log(111);
var result = fs.readFileSync("2.txt", "utf-8");
console.log(result);
console.log(222);

總結(jié):同步操作使用雖然簡單,但是會影響性能,因此盡量使用異步方法,尤其是在工作過程中。

path模塊

路徑操作的問題

在讀寫文件的時候,文件路徑可以寫相對路徑或者絕對路徑

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

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

絕對路徑:__dirname: 當前文件的目錄,__filename: 當前文件的目錄,包含文件名

path模塊的常用方法

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

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

常用方法:

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)?? ?獲取路徑的擴展名
?
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

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

相關(guān)文章

  • 基于node打包可執(zhí)行文件工具_Pkg使用心得分享

    基于node打包可執(zhí)行文件工具_Pkg使用心得分享

    下面小編就為大家分享一篇基于node打包可執(zhí)行文件工具_Pkg使用心得分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • node 使用 async 控制并發(fā)的方法

    node 使用 async 控制并發(fā)的方法

    這篇文章主要介紹了node 使用 async 控制并發(fā)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解node字體壓縮插件font-spider的用法

    詳解node字體壓縮插件font-spider的用法

    在本篇文章中給大家詳細講述了node字體壓縮插件font-spider的用法的相關(guān)知識點內(nèi)容,有需要的朋友參考下。
    2018-09-09
  • Node.js檢測端口(port)是否被占用的簡單示例

    Node.js檢測端口(port)是否被占用的簡單示例

    大家有沒有遇到過在開啟本地服務(wù)時,有這么一種情況:當前端口已經(jīng)被另一個項目使用了,導(dǎo)致服務(wù)開啟失敗。那么接下來,我們通過簡簡單單的示例代碼來檢測端口是否已經(jīng)被占用。有需要的朋友們可以參考借鑒。
    2016-09-09
  • nodejs檢測因特網(wǎng)是否斷開的解決方案

    nodejs檢測因特網(wǎng)是否斷開的解決方案

    這篇文章主要給大家介紹了關(guān)于nodejs如何檢測因特網(wǎng)是否斷開的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用nodejs具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • nodejs+koa2 實現(xiàn)模仿springMVC框架

    nodejs+koa2 實現(xiàn)模仿springMVC框架

    這篇文章主要介紹了nodejs+koa2 實現(xiàn)模仿springMVC框架,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 如何用npm命令刪除開發(fā)項目中的node_modules文件夾

    如何用npm命令刪除開發(fā)項目中的node_modules文件夾

    每個項目都會產(chǎn)生一個node_modules,每個node_modules少則幾十兆,多則幾百甚至上千兆,隨著時間的積累,維護項目的增加,整個項目目錄體積會越來越大,這篇文章主要給大家介紹了關(guān)于如何用npm命令刪除開發(fā)項目中的node_modules文件夾,需要的朋友可以參考下
    2023-12-12
  • npm?list輸出結(jié)果包含extraneous標志記錄分析

    npm?list輸出結(jié)果包含extraneous標志記錄分析

    這篇文章主要為大家介紹了npm?list輸出結(jié)果包含extraneous標志記錄分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Node.js中的流(Stream)介紹

    Node.js中的流(Stream)介紹

    這篇文章主要介紹了Node.js中的流(Stream)介紹,本文講解了什么是流、pipe方法、流的分類、Readable流狀態(tài)的切換等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • NodeJs之word文件生成與解析的實現(xiàn)代碼

    NodeJs之word文件生成與解析的實現(xiàn)代碼

    這篇文章主要介紹了NodeJs之word文件生成與解析的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評論