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 相关文章推荐
ajax 缓存 问题 requestheader
Aug 01 Javascript
Javascript MVC框架Backbone.js详解
Sep 18 Javascript
javascript实现base64 md5 sha1 密码加密
Sep 09 Javascript
前端框架Vue.js构建大型应用浅析
Sep 12 Javascript
详解Weex基于Vue2.0开发模板搭建
Mar 20 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
May 02 Javascript
JS改变页面颜色源码分享
Feb 24 Javascript
koa2 数据api中间件设计模型的实现方法
Jul 13 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
Jul 17 Javascript
JS检测浏览器开发者工具是否打开的方法详解
Oct 02 Javascript
JS+CSS实现动态时钟
Feb 19 Javascript
react中useState使用:如何实现在当前表格直接更改数据
Aug 05 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实现下载功能的代码
2012/09/29 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
2014/04/10 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
js实现数组转换成json
2015/06/26 Javascript
基于AngularJS实现页面滚动到底自动加载数据的功能
2015/10/16 Javascript
jQuery拖动元素并对元素进行重新排序
2015/12/30 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
微信小程序 教程之WXML
2016/10/18 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
element-ui中select组件绑定值改变,触发change事件方法
2018/08/24 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
python实现进程间通信简单实例
2014/07/23 Python
python+mysql实现简单的web程序
2014/09/11 Python
python安装以及IDE的配置教程
2015/04/29 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
用Python中的turtle模块画图两只小羊方法
2019/04/09 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
销售代表求职自荐信
2013/10/01 职场文书
小学生获奖感言范文
2014/02/02 职场文书
培训研修方案
2014/06/06 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
交通事故和解协议书
2014/09/25 职场文书
县级领导干部开展党的群众路线教育实践活动工作汇报
2014/10/25 职场文书
离职感谢信怎么写
2015/01/22 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
董事长开业致辞
2015/07/29 职场文书
医院病假条怎么写
2015/08/17 职场文书
python 爬取京东指定商品评论并进行情感分析
2021/05/27 Python
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android