Nodejs中fs文件系統(tǒng)模塊的路徑動態(tài)拼接的問題和解決方案
一、問題和解決方案
在使用
fs
模塊操作文件時,如果提供的操作路徑是以./或../
開頭的相對路徑時,很容易出現(xiàn)路徑動態(tài)拼接錯誤的問題
原因: 代碼在運行的時候,會以執(zhí)行 node 命令運行的目錄,動態(tài)拼接出被操作文件的完整路徑,也就是說這里的
./
和../
參考點是node 命令運行的目錄,而不是文件的目錄
解決方案:
- 在使用
fs
模塊操作文件時,直接提供完整的路徑,不要提供./或 ../
開頭的相對路徑,從而防止路徑動態(tài)拼接的問題- 使用內置的
__dirname
(當前文件所處的目錄)配合path.join()
動態(tài)獲取文件路徑
二、認識__dirname
__dirname
表示當前文件所處的目錄
實例
文件層級結構
index.js中
// __dirname 表示當前文件所處的目錄 console.log(__dirname); //D:\myProject\nodejs\nodejs\文件系統(tǒng)模塊\__dirname
從打印結果我們可以看出
__dirname
表示當前文件所處的目錄
三、path路徑模塊
3.1. 什么是path 路徑模塊
path 模塊
是 Node.js 官方提供的、用來處理路徑的模塊。它提供了一系列的方法和屬性,用來滿足用戶對路徑的處理需求。
path.join()
方法,用來將多個路徑片段拼接成一個完整的路徑字符串path.basename()
方法,用來從路徑字符串中,將文件名解析出來
如果要在JavaScript
代碼中,使用path
模塊來處理路徑,則需要使用如下的方式先導入它
const path = require('path')
3.2. path.join()
使用
path.join()
方法,可以把多個路徑片段拼接為完整的路徑字符串
注意:
path.join()
中../
代表抵消一層路徑
// 導入path模塊 const path = require("path"); const pathStr = path.join("/a", "/b/c", "../", "./d", "e"); // "../"抵消了/c這一層路徑 console.log(pathStr); //\a\b\d\e
四、path路徑模塊配合__dirname動態(tài)獲取文件路徑
實例
文件層級結構
成績.txt
index.js
// 導入文件系統(tǒng)模塊 const fs = require("fs"); // 導入path模塊 const path = require("path"); // __dirname當前文件所處的目錄 fs.readFile(path.join(__dirname, "/成績.txt"), "utf8", function (err, dataStr) { if (err) return console.log(err.message); //讀取失敗 console.log(dataStr); //讀取成功 });
以上就是Nodejs中fs文件系統(tǒng)模塊的路徑動態(tài)拼接的問題和解決方案的詳細內容,更多關于Nodejs fs路徑動態(tài)拼接的資料請關注腳本之家其它相關文章!
相關文章
Nodejs Express 通過log4js寫日志到Logstash(ELK)
這篇文章主要介紹了Nodejs Express 通過log4js寫日志到Logstash(ELK),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08