Node.js中fs模块实现配置文件的读写操作

 更新时间:2024年04月28日 10:49:30   作者:丶虎子  
在Node.js中, fs模块提供了对文件系统的访问功能,我们可以利用它来实现配置文件的读取和写入操作,这篇文章主要介绍了Node.js中fs模块实现配置文件的读写,需要的朋友可以参考下

Node.js中fs模块实现配置文件的读写 

在Node.js中, fs模块提供了对文件系统的访问功能,我们可以利用它来实现配置文件的读取和写入操作。正好用到,就记录一下。

准备工作

确保你的项目目录已经安装了做了npmpnpmyarn等node相关初始化,存在node_modules文件夹,这样就可以使用fs

const fs = require('fs');

接下来就是定义路径,我是用到年月来定义路径,并放在当前路径的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}`);
// 获取当前日期
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 };
}

读取配置

要实现读取的逻辑,首先要做下文件夹排空报错处理,!fs.existsSync(folderPath)假如路径不存在,那代表文件也不存在,mkdirp(folderPath);根据路径创建文件夹,再 fs.writeFileSync(aFilePath, '{}');创建文件。假如存在路径,!fs.existsSync(aFilePath)文件不存在,创建文件:

function CheckPathOrFiles() {
    if (!fs.existsSync(folderPath)) {
            mkdirp(folderPath);
            fs.writeFileSync(aFilePath, '{}');
        } else {
            if (!fs.existsSync(aFilePath)) {
                console.log(`创建文件:${aFilePath}`);
                fs.writeFileSync(aFilePath, '{}');
            }
        }
}
function mkdirp(dir) {
    if (fs.existsSync(dir)) { return true; }
    const dirname = path.dirname(dir);
    mkdirp(dirname); // 递归创建父目录
    fs.mkdirSync(dir);
}

在上面的代码中,我重构了mkdirp函数来创建空文件夹,而没有使用fs自带的mkdirSync(),使用后报错
Error: ENOENT: no such file or directory.Object.fs.mkdirSync,大致原因就是node.js低版本的漏洞吧,你也可以尝试直接使用下面代码代替mkdirp(folderPath);试试。

fs.mkdirSync(folderPath, { recursive: true }); // 递归创建路径

然后编写读取函数getHostConfigs(),通过fs.readFileSync(aFilePath, 'utf8')获取到aFilePath该文件路径下的文件:

function getHostConfigs() {
    console.log('进入读取环节..')
    try {
        CheckPathOrFiles()
        // 读取文件配置
        const data = fs.readFileSync(aFilePath, 'utf8');
        const hostConfigs = JSON.parse(data);
        console.log('配置校验成功!!');
        return hostConfigs;
    } catch (error) {
        console.error('读取失败:', error);
        return null;
    }
}

接下来是配置的更新写入,这部分可以根据自己需求来,比较重要的是let hostConfigs = getHostConfigs();读取配置,然后在这个函数里利用fs.writeFile(aFilePath,data)实现写入逻辑:

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('写入出错:', err);
        } else {
            console.log('配置写入成功..');
        }
    });
    console.log(hostConfigs);
}

最后导出模块,方便其他脚本使用:

module.exports = {
    updateHostConfigs,
    getHostConfigs
};

到此这篇关于Node.js中fs模块实现配置文件的读写的文章就介绍到这了,更多相关Node.js fs模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Node.js 学习笔记之简介、安装及配置

    Node.js 学习笔记之简介、安装及配置

    本文是Node.js学习笔记系列文章的第一篇,主要给大家讲解的是在Windows和Linux上安装Node.js的方法。软件安装版本以0.12.0为例。希望大家能够喜欢。
    2015-03-03
  • 用node和express连接mysql实现登录注册的实现代码

    用node和express连接mysql实现登录注册的实现代码

    本篇文章主要介绍了用node和express连接mysql实现登录注册的实现代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-07-07
  • 学习使用ExpressJS 4.0中的新Router的用法

    学习使用ExpressJS 4.0中的新Router的用法

    ExpressJS 4.0中提出了新的路由Router,提供了路由应有的API,本文详细的介绍了ExpressJS 4.0中的新Router的用法,非常具有实用价值,需要的朋友可以参考下
    2018-11-11
  • node.js中的fs.readSync方法使用说明

    node.js中的fs.readSync方法使用说明

    这篇文章主要介绍了node.js中的fs.readSync方法使用说明,本文介绍了fs.readSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 深入理解Commonjs规范及Node模块实现

    深入理解Commonjs规范及Node模块实现

    本篇文章主要介绍了深入理解Commonjs规范及Node模块实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • windows离线环境安装node-sass全过程

    windows离线环境安装node-sass全过程

    文章介绍了如何在Windows系统上安装和配置node-sass,并提供了一个详细的步骤指南,首先,通过命令行查看支持版本;然后,下载对应版本的node-sass安装包;接着,在npm配置文件中增加SASS_BINARY_PATH路径配置;最后,执行npmi命令完成安装
    2024-12-12
  • 利用node+koa+axios实现图片上传和回显功能

    利用node+koa+axios实现图片上传和回显功能

    这篇文章为大家详细介绍了如何利用node+koa+axios实现图片上传和回显功能,主要实现简单的图片上传和静态内容的访问,感兴趣的可以了解一下
    2022-05-05
  • node.js(expree.js )模拟手机验证码登录功能

    node.js(expree.js )模拟手机验证码登录功能

    这篇文章主要介绍了node.js(expree.js )模拟手机验证码功能及登录功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • node.js环境搭建图文详解

    node.js环境搭建图文详解

    Node.js 是一个让 JavaScript 运行在服务端的开发平台,小编在空闲时间就研究nodejs的相关知识,下面是本文给大家带来的node.js环境搭建教程图解,感兴趣的朋友跟随小编一起学习吧
    2018-09-09
  • Node.js的HTTP模块、URL模块与supervisor工具介绍

    Node.js的HTTP模块、URL模块与supervisor工具介绍

    这篇文章介绍了Node.js的HTTP模块、URL模块与supervisor工具,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06

最新评论