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 字符串连接[性能比较]
May 10 Javascript
jQuery实现的Div窗口震动特效
Jun 09 Javascript
JavaScript学习笔记之JS事件对象
Jan 22 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
May 17 Javascript
bootstrap table复杂操作代码
Nov 01 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
Nov 25 Javascript
深入理解Javascript中的valueOf与toString
Jan 04 Javascript
Jquery-data的三种用法
Apr 18 jQuery
JavaScript数据结构之优先队列与循环队列实例详解
Oct 27 Javascript
vue 引入公共css文件的简单方法(推荐)
Jan 20 Javascript
vscode配置vue下的es6规范自动格式化详解
Mar 20 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 Vue.js
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连接Access数据库错误及解决方法
2013/06/20 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
Laravel搭建后台登录系统步骤详解
2016/07/26 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
对于Python装饰器使用的一些建议
2015/06/03 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Python中的asyncio代码详解
2019/06/10 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
德国旅游网站:weg.de
2018/06/03 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
remote接口和home接口主要作用
2013/05/15 面试题
高一数学教学反思
2014/02/07 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
单位作风建设自查报告
2014/10/23 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年后勤工作总结
2014/11/18 职场文书
2015年个人剖析材料范文
2014/12/29 职场文书
刑事起诉书范文
2015/05/19 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
公司酒会主持词
2015/07/02 职场文书
2015年除四害工作总结
2015/07/23 职场文书
工作建议书范文
2019/07/08 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android