Node.js实现批量去除BOM文件头

  作者:bea

之前的同事写了一个工具,但有bug,就是在替换文件后原文件的格式变成utf8 BOM了,这种带BOM的XML在Mac下可能读取不出来,所以就需要写个工具处理一下。 其实思路比较简单,首先遍历目录,然后读取目录,将文件头三个字节去除掉,然后保存为utf-8格式的文件即可,直接上代码吧 :) 代码如下: var fs = require('fs'); var path = "目标路径.."; function readDirectory(dirPath) {
之前的同事写了一个工具,但有bug,就是在替换文件后原文件的格式变成utf8 BOM了,这种带BOM的XML在Mac下可能读取不出来,所以就需要写个工具处理一下。

其实思路比较简单,首先遍历目录,然后读取目录,将文件头三个字节去除掉,然后保存为utf-8格式的文件即可,直接上代码吧 :)



代码如下:


var fs = require('fs');
var path = "目标路径..";

function readDirectory(dirPath) {     if (fs.existsSync(dirPath)) {         var files = fs.readdirSync(dirPath);                 files.forEach(function(file) {             var filePath = dirPath + "/" + file;             var stats = fs.statSync(filePath);
            if (stats.isDirectory()) {                 console.log('
读取目录:
', filePath, "
");                 readDirectory(filePath);             } else if (stats.isFile()) {                 var buff = fs.readFileSync(filePath);                 if (buff[0].toString(16).toLowerCase() == "ef" && buff[1].toString(16).toLowerCase() == "bb" && buff[2].toString(16).toLowerCase() == "bf") {                     //EF BB BF 239 187 191                     console.log('发现BOM文件:', filePath, "
");
                    buff = buff.slice(3);                     fs.writeFile(filePath, buff.toString(), "utf8");                 }             }         });       
    } else {         console.log('Not Found Path : ', dirPath);     } }
readDirectory(path);




有用  |  无用

猜你喜欢