Node.js实现批量去除BOM文件头
之前的同事写了一个工具,但有bug,就是在替换文件后原文件的格式变成utf8BOM了,这种带BOM的XML在Mac下可能读取不出来,所以就需要写个工具处理一下。
其实思路比较简单,首先遍历目录,然后读取目录,将文件头三个字节去除掉,然后保存为utf-8格式的文件即可,直接上代码吧:)
varfs=require('fs'); varpath="目标路径..";
functionreadDirectory(dirPath){ if(fs.existsSync(dirPath)){ varfiles=fs.readdirSync(dirPath); files.forEach(function(file){ varfilePath=dirPath+"/"+file; varstats=fs.statSync(filePath);
if(stats.isDirectory()){ console.log('\n读取目录:\n',filePath,"\n"); readDirectory(filePath); }elseif(stats.isFile()){ varbuff=fs.readFileSync(filePath); if(buff[0].toString(16).toLowerCase()=="ef"&&buff[1].toString(16).toLowerCase()=="bb"&&buff[2].toString(16).toLowerCase()=="bf"){ //EFBBBF239187191 console.log('\发现BOM文件:',filePath,"\n");
buff=buff.slice(3); fs.writeFile(filePath,buff.toString(),"utf8"); } } });
}else{ console.log('NotFoundPath:',dirPath); } }
readDirectory(path);