站長資訊網
        最全最豐富的資訊網站

        聊聊node中的fs模塊、path模塊

        本篇文章帶大家了解一下node中的fs文件系統模塊和path路徑模塊,希望對大家有所幫助!

        聊聊node中的fs模塊、path模塊

        fs文件系統模塊

        fs 模塊是 Node.js 官方提供的、用來操作文件的模塊。它提供了一系列的方法和屬性,用來滿足用戶對文件的操作需求。

        • fs.readFile() 方法,用來讀取指定文件中的內容
        • fs.writeFile() 方法,用來向指定的文件中寫入內容 如果要在 JavaScript 代碼中,使用 fs 模塊來操作文件,則需要使用如下的方式先導入它:
         const fs = reuire('fs')

        讀取指定文件中的內容

        1. fs.readFile()的語法格式

        使用 fs.readFile() 方法,可以讀取指定文件中的內容,語法格式如下:

         fs.readFile(path[, options], callback)
        • 參數1:必選參數,需要指定一個文件路徑的字符串,表示要讀取哪個路徑對應的文件。
        • 參數2:可選參數,表示以什么編碼格式來讀取文件。
        • 參數3:必選參數,文件讀取完成后,通過回調函數拿到讀取的結果。

        2. fs.readFile()的示例代碼

        以 utf8 的格式,讀取指定文件的內容,并打印err 和 data 的值:

         const fs = require('fs');  fs.readFile('hello.txt', 'utf-8', (err, data) => {      // 判斷是否讀取成功      if (err) return console.log(err);      console.log(data);   });

        向指定的文件中寫入內容

        1. fs.writeFile()的語法格式

        使用 fs.writeFile() 方法,可以向指定的文件中寫入內容,語法格式如下:

         fs.writeFile(file, data[, options], callback)
        • 參數1:必選參數,需要指定一個文件路徑的字符串,表示要文件的存放路徑。
        • 參數2:必選參數,表示要寫入的內容。
        • 參數3:可選參數,表示以什么格式寫入文件內容,默認值是utf8。
        • 參數4:必選參數,文件寫入完成后的回調函數。

        2. fs.writeFile()的示例代碼

         const fs = require('fs');  fs.writeFile('./hello.txt', 'hello node', (err) => {      // 判斷是否寫入成功      if (err) return console.log(err);      console.log('寫入成功');  });

        讀取指定目錄下所有文件的名稱

        1.fs.readdir()的語法格式

        使用 fs.readdir() 方法,可以讀取指定目錄下所有文件的名稱,語法格式如下:

         fs.readdir(path[, options], callback)
        • 參數1:必選參數,表示要讀取哪個目錄下的文件名稱列表。
        • 參數2:可選參數,以什么格式讀取目錄下的文件名稱,默認值是utf8。
        • 參數3:必選參數,讀取完成以后的回調函數。

        2.fs.readdir()的示例代碼

        通過 fs.readdir() 方法,可以讀取指定目錄下,所有文件的名稱:

         const fs = require('fs');  fs.readdir('./', (err, data) => {      // 錯誤處理      if (err) return console.log(err);      console.log(data);  });

        fs 模塊-路徑動態拼接的問題

        在使用 fs 模塊操作文件時,如果提供的操作路徑是以./ 或 ../ 開頭的相對路徑時,很容易出現路徑動態拼接錯誤的問題。 這是因為代碼在運行的時候,會以執行node 命令時所處的目錄,動態拼接出被操作文件的完整路徑。

        解決方案:在使用fs 模塊操作文件時,直接提供絕對路徑,不要提供./ 或 ../ 開頭的相對路徑,從而防止路徑動態拼接的問題。

        注意:使用__dirname 獲取當前文件所在的絕對路徑

         const fs = require('fs');  // 拼接要讀取文件的絕對路徑  let filepath = __dirname +'/hello.txt'  fs.readFile(filepath, 'utf-8', (err, data) => {      // 判斷是否讀取成功      if (err) return console.log(err);      console.log(data);   });

        path路徑模塊

        path 模塊是 Node.js 官方提供的、用來處理路徑的模塊。它提供了一系列的方法和屬性,用來滿足用戶對路徑的處理需求。

        • path.join() 方法,用來將多個路徑片段拼接成一個完整的路徑字符串
        • path.basename() 方法,用來從路徑字符串中,將文件名解析出來

        如果要在 JavaScript 代碼中,使用 path 模塊來處理路徑,則需要使用如下的方式先導入它:

         const path = require('path')

        路徑拼接

        path.join()的語法格式

        使用 path.join() 方法,可以把多個路徑片段拼接為完整的路徑字符串,語法格式如下:

         path.join([...paths])

        使用 path.join() 方法,可以把多個路徑片段拼接為完整的路徑字符串:

         const path = require('path');  console.log( path.join('a', 'b', 'c') ); // a/b/c  console.log( path.join('a', '/b/', 'c') ); // a/b/c  console.log( path.join('a', '/b/', 'c', 'index.html') ); // a/b/c/index.html  console.log( path.join('a', 'b', '../c', 'index.html') ); // a/c/index.html  console.log(__dirname); // node自帶的全局變量,表示當前js文件所在的絕對路徑  // 拼接成績.txt的絕對路徑  console.log( path.join(__dirname, '成績.txt') ); // ------ 最常用的

        獲取路徑中的文件名

        1.path.basename()的語法格式

        使用 path.basename() 方法,可以獲取路徑中的最后一部分,經常通過這個方法獲取路徑中的文件名,語法格式如下:

         path.basename(path[,ext])
        • path 必選參數,表示一個路徑的字符串
        • ext 可選參數,表示可選的文件擴展名
        • 返回: 表示路徑中的最后一部分

        2.path.basename()的代碼示例

        使用 path.basename() 方法,可以從一個文件路徑中,獲取到文件的名稱部分:

         // 找文件名  console.log( path.basename('index.html') ); // index.html  console.log( path.basename('a/b/c/index.html') ); // index.html  console.log( path.basename('a/b/c/index.html?id=3') ); // index.html?id=3  console.log(path.basename('/api/getbooks')) // getbooks

        獲取路徑中的文件擴展名

        1.path.extname()的語法格式

        使用 path.extname() 方法,可以獲取路徑中的擴展名部分,語法格式如下:

         path.extname(path)
        • path 必選參數,表示一個路徑的字符串
        • 返回: 返回得到的擴展名字符串

        使用 path.extname() 方法,可以獲取路徑中的擴展名部分

         // 找字符串中,最后一個點及之后的字符  console.log( path.extname('index.html') ); // .html  console.log( path.extname('a.b.c.d.html') ); // .html  console.log( path.extname('asdfas/asdfa/a.b.c.d.html') ); // .html  console.log( path.extname('adf.adsf') ); // .adsf

        原文地址:https://juejin.cn/post/7088650568150810638

        作者:L同學啦啦啦

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 久久成人国产精品二三区| 国产精品午夜福利在线无码| 久久精品国产91久久麻豆自制| 无码人妻精品一区二区三区99不卡 | 久久福利青草精品资源站| 中文字幕精品无码一区二区 | 久久99精品久久久久久久不卡| 久久99精品国产99久久6| 欧美成人精品一区二区三区| 久久国产精品成人片免费| 亚洲精品色婷婷在线影院| 精品国产亚洲男女在线线电影 | 麻豆精品| 国产日韩高清三级精品人成| 四虎国产精品免费久久久| 2022国产精品自产拍在线观看| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 亚洲精品无码AV人在线播放 | 国产精品午夜国产小视频| 四虎影视884a精品国产四虎| jizz国产精品网站| 精品人无码一区二区三区| 亚洲精品无码AV人在线播放| 亚洲精品成人久久久| 亚洲精品国产精品乱码不卡| 久久五月精品中文字幕| 韩国三级中文字幕hd久久精品| 国产精品麻豆欧美日韩ww| 国产精品第一页在线| 狠狠精品久久久无码中文字幕| 国产精品亚洲视频| 九九久久精品国产| 久久久久久国产精品免费免费| 久久久99精品成人片中文字幕| 国产精品午夜无码AV天美传媒| 国产激情精品一区二区三区| 国产AⅤ精品一区二区三区久久| 国产精品99精品视频网站| 国产高清一级毛片精品| 国产精品永久免费视频| 久久精品一区二区三区中文字幕|