Nodejs 学习笔记 - 遍历文件夹,处理txt
Posted 笑虾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nodejs 学习笔记 - 遍历文件夹,处理txt相关的知识,希望对你有一定的参考价值。
var fs = require('fs');
var path = require('path');
//目标文件夹。以当前文件夹为例
var filePath = path.resolve('./');
/**
* 递归遍历指定目录,处理所有 txt 文件
* @param {路径} filePath
* @param {处理逻辑} callback
* @param {扩展名,默认.txt} ext
*/
function myProcess(filePath, callback, ext = '.txt'){
/**
* 遍历目录
* @param filePath 目标路径
*/
function recurvePath(filePath){
var files = fs.readdirSync(filePath);
files.forEach(function(filename){
//获取当前文件的绝对路径
var filedir = path.join(filePath,filename);
//根据文件路径获取文件信息
var stats = fs.statSync(filedir);
var isFile = stats.isFile(); //是文件
var isDir = stats.isDirectory(); //是文件夹
// 如果:是文件; 扩展名=.txt; callback是函数
if(isFile && filename.substr(-4) === ext && typeof callback === "function"){
var str = fs.readFileSync(filedir, 'utf8');
// console.log(str);
callback(str);
}else if(isDir){
//如果是文件夹,递归遍历
recurvePath(filedir);
}
});
}
recurvePath(filePath);
}
/**
* 处理每个文件的逻辑代码
* @param {文件内容字符串} dataStr
*/
function doProcess2(dataStr){
var json = JSON.parse(dataStr);
var key = `${json.a}${json.b}`;
if(onlyMark[key]){
return;
}
var str = `
resultMap.put("${key}", new HashMap<String, String>() {{
put("code", "${json.code}");
put("id", "${json.id}");
}});
`
arr.push(str);
onlyMark[key] = true;
}
function doProcess(dataStr){
var json = JSON.parse(dataStr);
obj[`${json.a}${json.b}`] = {"code": json.aCode, "id": json.approveId};
}
var arr = [];
var obj = {};
var onlyMark = {};
(function main(){
// 递归 filePath 用 doProcess 处理 .txt
myProcess(filePath, doProcess, '.txt');
// 同步写文件
fs.writeFileSync('./javaMap.log', JSON.stringify(obj,null,2), 'utf8');
})();
以上是关于Nodejs 学习笔记 - 遍历文件夹,处理txt的主要内容,如果未能解决你的问题,请参考以下文章