Node.js中fs模塊實(shí)現(xiàn)配置文件的讀寫操作
Node.js中fs模塊實(shí)現(xiàn)配置文件的讀寫
在Node.js中, fs
模塊提供了對(duì)文件系統(tǒng)的訪問功能,我們可以利用它來實(shí)現(xiàn)配置文件的讀取和寫入操作。正好用到,就記錄一下。
準(zhǔn)備工作
確保你的項(xiàng)目目錄已經(jīng)安裝了做了npm
或pnpm
或yarn
等node相關(guān)初始化,存在node_modules
文件夾,這樣就可以使用fs
:
const fs = require('fs');
接下來就是定義路徑,我是用到年月來定義路徑,并放在當(dāng)前路徑的storeConfigs
下:
const path = require('path'); const date = getDate(); // 文件夾路徑 ./storeConfigs/${date.year}/${date.month} const folderPath = path.resolve(__dirname, 'storeConfigs', `${date.year}`, `${date.month}`); // 用date.day來定義文件名 ./storeConfigs/${date.year}/${date.month}/${date.day} const aFilePath = path.resolve(folderPath, `${date.day}`); // 獲取當(dāng)前日期 function getDate() { const currentDate = new Date(); const year = currentDate.getFullYear(); const month = currentDate.getMonth() + 1; const day = currentDate.getDate(); return { year: year, month: month, day: day }; }
讀取配置
要實(shí)現(xiàn)讀取的邏輯,首先要做下文件夾排空?qǐng)?bào)錯(cuò)處理,!fs.existsSync(folderPath)
假如路徑不存在,那代表文件也不存在,mkdirp(folderPath);
根據(jù)路徑創(chuàng)建文件夾,再 fs.writeFileSync(aFilePath, '{}');
創(chuàng)建文件。假如存在路徑,!fs.existsSync(aFilePath)
文件不存在,創(chuàng)建文件:
function CheckPathOrFiles() { if (!fs.existsSync(folderPath)) { mkdirp(folderPath); fs.writeFileSync(aFilePath, '{}'); } else { if (!fs.existsSync(aFilePath)) { console.log(`創(chuàng)建文件:${aFilePath}`); fs.writeFileSync(aFilePath, '{}'); } } } function mkdirp(dir) { if (fs.existsSync(dir)) { return true; } const dirname = path.dirname(dir); mkdirp(dirname); // 遞歸創(chuàng)建父目錄 fs.mkdirSync(dir); }
在上面的代碼中,我重構(gòu)了mkdirp
函數(shù)來創(chuàng)建空文件夾,而沒有使用fs
自帶的mkdirSync()
,使用后報(bào)錯(cuò)Error: ENOENT: no such file or directory.Object.fs.mkdirSync
,大致原因就是node.js低版本的漏洞吧,你也可以嘗試直接使用下面代碼代替mkdirp(folderPath);
試試。
fs.mkdirSync(folderPath, { recursive: true }); // 遞歸創(chuàng)建路徑
然后編寫讀取函數(shù)getHostConfigs()
,通過fs.readFileSync(aFilePath, 'utf8')
獲取到aFilePath
該文件路徑下的文件:
function getHostConfigs() { console.log('進(jìn)入讀取環(huán)節(jié)..') try { CheckPathOrFiles() // 讀取文件配置 const data = fs.readFileSync(aFilePath, 'utf8'); const hostConfigs = JSON.parse(data); console.log('配置校驗(yàn)成功!!'); return hostConfigs; } catch (error) { console.error('讀取失敗:', error); return null; } }
接下來是配置的更新寫入,這部分可以根據(jù)自己需求來,比較重要的是let hostConfigs = getHostConfigs();
讀取配置,然后在這個(gè)函數(shù)里利用fs.writeFile(aFilePath,data)
實(shí)現(xiàn)寫入邏輯:
function updateHostConfigs(config) { let hostConfigs = getHostConfigs(); if (!hostConfigs) { hostConfigs = {}; } if (config.host) { hostConfigs[config.host] = config; } // 寫入配置 fs.writeFile(aFilePath, JSON.stringify(hostConfigs), (err) => { if (err) { console.error('寫入出錯(cuò):', err); } else { console.log('配置寫入成功..'); } }); console.log(hostConfigs); }
最后導(dǎo)出模塊,方便其他腳本使用:
module.exports = { updateHostConfigs, getHostConfigs };
到此這篇關(guān)于Node.js中fs模塊實(shí)現(xiàn)配置文件的讀寫的文章就介紹到這了,更多相關(guān)Node.js fs模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.js 學(xué)習(xí)筆記之簡(jiǎn)介、安裝及配置
本文是Node.js學(xué)習(xí)筆記系列文章的第一篇,主要給大家講解的是在Windows和Linux上安裝Node.js的方法。軟件安裝版本以0.12.0為例。希望大家能夠喜歡。2015-03-03用node和express連接mysql實(shí)現(xiàn)登錄注冊(cè)的實(shí)現(xiàn)代碼
本篇文章主要介紹了用node和express連接mysql實(shí)現(xiàn)登錄注冊(cè)的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07學(xué)習(xí)使用ExpressJS 4.0中的新Router的用法
ExpressJS 4.0中提出了新的路由Router,提供了路由應(yīng)有的API,本文詳細(xì)的介紹了ExpressJS 4.0中的新Router的用法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-11-11深入理解Commonjs規(guī)范及Node模塊實(shí)現(xiàn)
本篇文章主要介紹了深入理解Commonjs規(guī)范及Node模塊實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05windows離線環(huán)境安裝node-sass全過程
文章介紹了如何在Windows系統(tǒng)上安裝和配置node-sass,并提供了一個(gè)詳細(xì)的步驟指南,首先,通過命令行查看支持版本;然后,下載對(duì)應(yīng)版本的node-sass安裝包;接著,在npm配置文件中增加SASS_BINARY_PATH路徑配置;最后,執(zhí)行npmi命令完成安裝2024-12-12利用node+koa+axios實(shí)現(xiàn)圖片上傳和回顯功能
這篇文章為大家詳細(xì)介紹了如何利用node+koa+axios實(shí)現(xiàn)圖片上傳和回顯功能,主要實(shí)現(xiàn)簡(jiǎn)單的圖片上傳和靜態(tài)內(nèi)容的訪問,感興趣的可以了解一下2022-05-05node.js(expree.js?)模擬手機(jī)驗(yàn)證碼登錄功能
這篇文章主要介紹了node.js(expree.js?)模擬手機(jī)驗(yàn)證碼功能及登錄功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-01-01Node.js的HTTP模塊、URL模塊與supervisor工具介紹
這篇文章介紹了Node.js的HTTP模塊、URL模塊與supervisor工具,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06