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


Posted in Javascript onDecember 20, 2014

之前的同事写了一个工具,但有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);
Javascript 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
Firefox window.close()的使用注意事项
Apr 11 Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 Javascript
通过扫描二维码打开app的实现代码
Nov 10 Javascript
jQuery的事件预绑定
Dec 05 Javascript
vue2组件之select2调用的示例代码
Oct 12 Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 Javascript
js打开word文档预览操作示例【不是下载】
May 23 Javascript
layui表格内放置图片,并点击放大的实例
Sep 10 Javascript
layer iframe 设置关闭按钮的方法
Sep 12 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
Sep 24 Javascript
javascript删除一个html元素节点的方法
Dec 20 #Javascript
Node.js中调用mysql存储过程示例
Dec 20 #Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
Dec 20 #Javascript
jQuery多媒体插件jQuery Media Plugin使用详解
Dec 19 #Javascript
jquery图片播放浏览插件prettyPhoto使用详解
Dec 19 #Javascript
js中匿名函数的创建与调用方法分析
Dec 19 #Javascript
浅谈Javascript中匀速运动的停止条件
Dec 19 #Javascript
You might like
Yii操作数据库的3种方法
2014/03/11 PHP
php使用mkdir创建多级目录入门例子
2014/05/10 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
laravel自定义分页效果
2017/07/23 PHP
浅谈PHP中的Trait使用方法
2019/03/22 PHP
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
纯Javascript实现Windows 8 Metro风格实现
2013/10/15 Javascript
一个JavaScript函数把URL参数解析成Json对象
2014/09/24 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
[03:55]DOTA2完美大师赛选手传记——LFY.MONET
2017/11/18 DOTA
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
python中返回矩阵的行列方法
2018/04/04 Python
windows下安装Python的XlsxWriter模块方法
2018/05/03 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
Python设计模式之组合模式原理与用法实例分析
2019/01/11 Python
基于Python的PIL库学习详解
2019/05/10 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
yy结婚证婚词
2014/01/10 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
小学教学随笔感言
2014/02/26 职场文书
合伙经营协议书范本
2014/04/18 职场文书
优秀员工评优方案
2014/06/13 职场文书
可可西里观后感
2015/06/08 职场文书
趣味运动会简讯
2015/07/20 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书