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 相关文章推荐
js实现简单鼠标跟随效果的方法
Apr 10 Javascript
javascript实现模拟时钟的方法
May 13 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
浅谈js中对象的使用
Aug 11 Javascript
bootstrap css样式之表单
Jan 19 Javascript
Angular.JS中select下拉框设置value的方法
Jun 20 Javascript
微信小程序 获取二维码实例详解
Jun 23 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
Sep 19 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
原生JS实现$.param() 函数的方法
Aug 10 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
Mar 01 jQuery
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
PHP环境中Memcache的安装和使用
2015/11/05 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
CL vs ForZe BO5 第四场 2.13
2021/03/10 DOTA
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
利用JQuery动画制作滑动菜单项效果实现步骤及代码
2013/02/07 Javascript
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
js实现横向拖拽导航条功能
2017/02/17 Javascript
Angular.js实现多个checkbox只能选择一个的方法示例
2017/02/24 Javascript
Vue.js 踩坑记之双向绑定
2018/05/03 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
详解Vue 全局变量,局部变量
2019/04/17 Javascript
[01:00]选手抵达华西村 整装待发备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
实例讲解Python中的私有属性
2014/08/21 Python
用Python编写简单的微博爬虫
2016/03/04 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
Python数据集切分实例
2018/12/08 Python
python实现文件的分割与合并
2019/08/29 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
什么是Python包的循环导入
2020/09/08 Python
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
将相和教学反思
2014/02/04 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
保研推荐信格式
2015/03/25 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
2016廉洁教育心得体会
2016/01/20 职场文书
七年级作文之英语老师
2019/10/28 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
关于EntityWrapper的in用法
2022/03/22 Java/Android