首頁  >  文章  >  web前端  >  聊聊node中的fs模組、path模組

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

青灯夜游
青灯夜游轉載
2022-04-24 21:00:452305瀏覽

這篇文章帶大家了解一下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同学啦啦啦

更多node相关知识,请访问:nodejs 教程

以上是聊聊node中的fs模組、path模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除