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 模式之工厂模式(Factory)应用介绍
Nov 15 Javascript
JS仿百度搜索自动提示框匹配查询功能
Nov 21 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
js实现按钮控制图片360度翻转特效的方法
Feb 17 Javascript
jquery实现的代替传统checkbox样式插件
Jun 19 Javascript
理解Javascript的call、apply
Dec 16 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
Dec 06 jQuery
JavaScript常见继承模式实例小结
Jan 11 Javascript
vue 移动端注入骨架屏的配置方法
Jun 25 Javascript
js实现表格数据搜索
Aug 09 Javascript
JavaScript实现随机点名小程序
Oct 29 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
简单的JS多重继承示例
2008/03/13 Javascript
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
JavaScript 调试器简介
2009/02/21 Javascript
利用jquery包将字符串生成二维码图片
2013/09/12 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
jQuery对html元素取值与赋值的方法
2013/11/20 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
JS实现向表格行添加新单元格的方法
2015/03/30 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
JavaScript事件学习小结(三)js事件对象
2016/06/09 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
JavaScript解析机制与闭包原理实例详解
2019/03/08 Javascript
turn.js异步加载实现翻书效果
2019/07/25 Javascript
npm qs模块使用详解
2020/02/07 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
python简单获取数组元素个数的方法
2015/07/13 Python
python数据处理实战(必看篇)
2017/06/11 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python代码如何注释
2020/06/01 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
物流管理应届生求职信
2013/11/07 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
保洁公司服务承诺书
2014/05/28 职场文书
2014年标准化工作总结
2014/12/17 职场文书
优秀教师个人总结
2015/02/11 职场文书
旅游投诉信范文
2015/07/02 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python