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 更严格的相等 [译]
Sep 20 Javascript
jQuery中prependTo()方法用法实例
Jan 08 Javascript
Jquery注册事件实现方法
May 18 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
Jun 19 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 jQuery
vue+swiper实现侧滑菜单效果
Dec 28 Javascript
react 创建单例组件的方法
Apr 26 Javascript
js图片查看器插件用法示例
Jun 22 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 Javascript
js实现聊天对话框
Feb 08 Javascript
react实现复选框全选和反选组件效果
Aug 25 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
PHP中的按位与和按位或操作示例
2014/01/27 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
全面解读PHP的Yii框架中的日志功能
2016/03/17 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
实例讲解JavaScript中instanceof运算符的用法
2016/06/08 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
JQuery特殊效果和链式调用操作示例
2019/05/13 jQuery
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
python实现哈希表
2014/02/07 Python
Python中super的用法实例
2015/05/28 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
django文档学习之applications使用详解
2018/01/29 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
python实现图片转字符画的完整代码
2021/02/21 Python
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
NBA欧洲商店(英国):NBA Europe Store UK
2018/07/27 全球购物
劳动工资科岗位职责范本
2014/03/02 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2014年组织部工作总结
2014/11/14 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
小程序实现文字循环滚动动画
2021/06/14 Javascript
CSS作用域(样式分割)的使用汇总
2021/11/07 HTML / CSS
Win2008系统搭建DHCP服务器
2022/06/25 Servers