专栏首页游戏杂谈Node.js批量去除BOM文件

Node.js批量去除BOM文件

之前的同事写了一个工具,但有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);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Flash性能分析与调试工具

    flash player(非debugger)版本:http://get.adobe.com/cn/flashplayer/

    meteoric
  • appstore防代充的一些想法

    点击这里可以查看代充相关的报道, 利用苹果商店规则漏洞,出现了一个灰色地下产业链>>

    meteoric
  • Node.js文件编码格式的转换

    项目很多 lua 文件不是 utf-8格式,使用 EditPlus 查看的时候,显示为ASCII。还有的是带BOM的,带BOM倒好处理,之前写过,有一定规律。

    meteoric
  • DPDK之PMD原理

    PMD是Poll Mode Driver的缩写,即基于用户态的轮询机制的驱动。本文将介绍PMD的基本原理。

    glinuxer
  • 微信公众号文章素材收集网站大盘点

    相信很多玩自媒体的朋友最头疼的就是源源不断的素材,下面这些网站如果对你有用的话建议尽快收藏,希望在你写文章上有所帮助。至于大家怎么用,就不用多说了吧!

    用户6102055
  • 原型模式

    概念: 是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例。被复制的实例就是我们所称的原型。 原型模式的拷贝:分为"浅拷贝"和"深...

    xiangzhihong
  • OpenCV3 新特性 - 图像无缝克隆函数演示

    OpenCV3.x的图像计算模块多了新算法API-无缝克隆(Seamless Cloning),主要是针对图像编辑,局部修改等应用场景实现迁移对象与原图像场景的...

    OpenCV学堂
  • 聊聊skywalking的TopNDatabaseStatement

    skywalking-6.6.0/oap-server/server-core/src/main/java/org/apache/skywalking/oap/...

    codecraft
  • list,tuple,set,dict汇

    py3study
  • PDF.NET数据开发框架操作MySQL实体类操作实例

    在我们最近的项目中,SQL-MAP使用较多,但是实体类用的很少,实际上,“PDF.NET数据开发框架”的实体类相当强大,下面的测试程序是在MySQL中操作的实例...

    用户1177503

扫码关注云+社区

领取腾讯云代金券