博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js - fs 模块学习
阅读量:5882 次
发布时间:2019-06-19

本文共 1787 字,大约阅读时间需要 5 分钟。

fs 模块 主要是提供一些操作 磁盘文件 的 api,基本上构建工具 都要用到 fs 去对文件进行 读 和 写。

fs 模块咋一看文档,api贼多,简直无法直视。

然后再看一下,发现其实可以一分为二,api大都分为同步的和异步的,这样分析就会觉得好多了。

于是乎,半抄半写的做了个 json 文件合并的小demo,功能就是读取指定目录下的 json 文件,然后写到同一个 json 文件里面去。

新建一个工作目录,进入到 工作目录后 npm init -y, 然后在目录下新建一个名字为 json 的文件夹,放几个json文件进去。

再在工作目录新建一个 index.js, 代码如下:

const fs = require('fs');const path = require('path');const exists = filePath => fs.existsSync(filePath);// 获取 命令行传入的 json 目录const jsonPath = process.argv[2];if (!jsonPath) {    console.log('未传入json目录');    process.exit(1);}const rootPath = path.join(process.cwd(), jsonPath);const newFilePath = './data.json';// 遍历目录下的 json 文件function walkJsonFile(dirPath) {    const files = fs.readdirSync(dirPath);    const result = [];    files.forEach(file => {        const filePath = `${dirPath}/${file}`;        const stat = fs.statSync(filePath);        if ( stat.isFile() && (/\.json$/).test(file) ) {            result.push(filePath);        }    });    return result;}// 合并 json 文件内容 到 newJson 文件夹function mergeJsonFile() {    const files = walkJsonFile(rootPath);    if (!files.length) process.exit(2);    const data = files        .filter(exists)        .reduce((total, file) => {            const fileData = fs.readFileSync(file);            // 获取文件名称            const baseName = path.basename(file, '.json');            let fileJson            try {                fileJson = JSON.parse(fileData);            } catch (err) {                console.log(err);            }                        total[baseName] = fileJson;            // 如果不想区分 baseName, 直接合并即可            // total = { ...total, ...fileJson };            return total;        }, {});    fs.writeFileSync(newFilePath, JSON.stringify(data, null, 2));}mergeJsonFile();复制代码

在工作目录下运行

node index.js json复制代码

就可以看到代码被合并到新文件中了。

效果如图:

参考

转载地址:http://sgpix.baihongyu.com/

你可能感兴趣的文章
java8 时间类与Date类的相互转化
查看>>
下半年过了中项,感谢学院,感谢薛老师,后面就跟着学院的各位老师学与考了
查看>>
RAID磁盘冗余阵列
查看>>
支付宝升级延时到账功能
查看>>
ghost后只剩下一个盘的数据寻回方法
查看>>
输入输出练习
查看>>
Git commit message和工作流规范
查看>>
java面试。答案源于网上
查看>>
yii中取得CActiveDataProvider的分页信息
查看>>
我的大学
查看>>
Google翻译接口收费啦
查看>>
Debian+Apache2服务器
查看>>
linux——编译安装nginx出现报错,以及启动nginx服务时80端口被占用怎么解决?...
查看>>
MySQL库和表的操作
查看>>
shell编程:编译器、解释器 变量
查看>>
yum仓库一些简单介绍
查看>>
HashMap----工作原理
查看>>
Aliware(企业级互联网架构ACP)复习整理-EDAS
查看>>
java线程无法正常停止总结
查看>>
我的友情链接
查看>>