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

前端技术 2023/09/08 JavaScript

之前的同事写了一个工具,但有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(\'\\n读取目录:\\n\', filePath, \"\\n\");
                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, \"\\n\");

                    buff = buff.slice(3);
                    fs.writeFile(filePath, buff.toString(), \"utf8\");
                }
            }
        });       

    } else {
        console.log(\'Not Found Path : \', dirPath);
    }
}

readDirectory(path);

本文地址:https://www.stayed.cn/item/21857

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。