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实现轮显新闻标题链接
Aug 13 Javascript
ext form 表单提交数据的方法小结
Aug 08 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
jQuery实现的无限级下拉菜单功能示例
Sep 12 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
Dec 23 Javascript
微信小程序 如何引入外部字体库iconfont的图标
Jan 31 Javascript
jQuery实现点击自身以外区域关闭弹出层功能完整示例【改进版】
Jul 31 jQuery
使用node.js实现微信小程序实时聊天功能
Aug 13 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
vue实现二级导航栏效果
Oct 19 Javascript
可拖拽组件slider.js使用方法详解
Dec 04 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判断服务器是否是HTTPS连接
2013/07/05 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
让alert不出现弹窗的两种方法
2014/05/18 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
Mac 安装 nodejs方法(图文详细步骤)
2017/10/30 NodeJs
微信小程序实现弹出菜单
2018/07/19 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
[07:39]第一届亚洲邀请赛回顾视频
2017/02/14 DOTA
python中bisect模块用法实例
2014/09/25 Python
Python进程间通信用法实例
2015/06/04 Python
python3爬取各类天气信息
2018/02/24 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
详解django2中关于时间处理策略
2019/03/06 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
Python搭建代理IP池实现检测IP的方法
2019/10/27 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
运动会开幕式邀请函
2014/02/03 职场文书
职工运动会感言
2014/02/07 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
化学专业自荐信
2014/05/28 职场文书
2014年工程工作总结
2014/11/25 职场文书
单位未婚证明范本
2014/11/25 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
python xlwt模块的使用解析
2021/04/13 Python