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 相关文章推荐
javascript Ext JS 状态默认存储时间
Feb 15 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
js实现文章文字大小字号功能完整实例
Nov 01 Javascript
bootstrap3 兼容IE8浏览器!
May 02 Javascript
JavaScript中动态向表格添加数据
Jan 24 Javascript
H5图片压缩与上传实例
Apr 21 Javascript
关于Angularjs中自定义指令一些有价值的细节和技巧小结
Apr 22 Javascript
24行JavaScript代码实现Redux的方法实例
Nov 17 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
Feb 24 Javascript
vue实现商品列表的添加删除实例讲解
May 14 Javascript
vue+element获取el-table某行的下标,根据下标操作数组对象方式
Aug 07 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
PHP4和PHP5共存于一系统
2006/11/17 PHP
PHP中文件上传的一个问题
2010/09/04 PHP
常见的PHP五种设计模式小结
2011/03/23 PHP
Smarty foreach控制循环次数的实现详解
2013/07/03 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
javaScript arguments 对象使用介绍
2013/10/18 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
彻底学会Angular.js中的transclusion
2017/03/12 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
原生js+canvas实现验证码
2020/11/29 Javascript
JavaScript实现雪花飘落效果
2020/12/27 Javascript
[58:25]VP vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python中cPickle用法例子分享
2014/01/03 Python
python中pycurl库的用法实例
2014/09/30 Python
对于Python的Django框架部署的一些建议
2015/04/09 Python
Python常用知识点汇总
2016/05/08 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
python实现一个猜拳游戏
2020/04/05 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
医学专业大学生求职的自我评价
2013/11/27 职场文书
高中军训广播稿
2014/01/14 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
同事离别感言
2015/08/04 职场文书
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL