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 相关文章推荐
jQuery 表单验证扩展代码(二)
Oct 20 Javascript
editable.js 基于jquery的表格的编辑插件
Oct 24 Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
May 06 Javascript
angularjs封装bootstrap时间插件datetimepicker
Jun 20 Javascript
20分钟打造属于你的Bootstrap站点
Jul 27 Javascript
JS和canvas实现俄罗斯方块
Mar 14 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 Javascript
JS实现判断有效的数独算法示例
Feb 25 Javascript
vue实现页面切换滑动效果
Jun 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
一台收音机,让一家人都笑逐颜开!
2020/08/21 无线电
php inc文件使用的风险和注意事项
2013/11/12 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
PHP echo()函数讲解
2019/02/15 PHP
添加到收藏夹代码(兼容几乎所有的浏览器)
2007/01/09 Javascript
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
jquery实现的淡入淡出下拉菜单效果
2015/08/25 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
js拼接html字符串的注意事项
2016/10/13 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
原生js实现滑块区间组件
2021/01/20 Javascript
python Django连接MySQL数据库做增删改查
2013/11/07 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
代码实例讲解python3的编码问题
2019/07/08 Python
Django ModelForm操作及验证方式
2020/03/30 Python
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
建龙钢铁面试总结
2014/04/15 面试题
大学应届生求职简历的自我评价
2013/10/08 职场文书
化验室技术员岗位职责
2013/12/24 职场文书
简单的项目建议书模板
2014/03/12 职场文书
公共机构节能宣传周活动总结
2014/07/09 职场文书
以权谋私检举信范文
2015/03/02 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL