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 Array数组对象的扩展函数代码
May 22 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
Jun 15 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
Aug 14 Javascript
jQuery ajax dataType值为text json探索分享
Sep 23 Javascript
jQuery中:header选择器用法实例
Dec 29 Javascript
JavaScript中constructor()方法的使用简介
Jun 05 Javascript
js实现简单折叠、展开菜单的方法
Aug 28 Javascript
使用D3.js创建物流地图的示例代码
Jan 27 Javascript
JavaScript数据结构之栈实例用法
Jan 18 Javascript
vue cli3适配所有端方案的实现
Apr 13 Javascript
关于Js中new操作符的作用详解
Feb 21 Javascript
JavaScript中跨域问题的深入理解
Mar 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
php执行sql语句的写法
2009/03/10 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
微信获取用户地理位置信息的原理与步骤
2015/11/12 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
js实现页面转发功能示例代码
2013/08/05 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
nodejs爬虫抓取数据之编码问题
2015/07/03 NodeJs
动态加载js、css的简单实现代码
2016/05/26 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
详解jQuery简单的表格应用
2016/12/16 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
vue 表单验证按钮事件交由父组件触发的方法
2018/12/17 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
Python获取Windows或Linux主机名称通用函数分享
2014/11/22 Python
Python连接DB2数据库
2016/08/27 Python
Python脚本实现自动将数据库备份到 Dropbox
2017/02/06 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
Python实现通讯录功能
2018/02/22 Python
python打包生成的exe文件运行时提示缺少模块的解决方法
2018/10/31 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
Keras中的多分类损失函数用法categorical_crossentropy
2020/06/11 Python
Python如何重新加载模块
2020/07/29 Python
亚马逊墨西哥站:Amazon.com.mx
2018/08/26 全球购物
介绍一下Cookie和Session及他们之间的区别
2012/11/20 面试题
学党史心得体会
2014/09/05 职场文书
满月酒邀请函
2015/01/30 职场文书
努力工作保证书
2015/02/28 职场文书
党员承诺书格式范文
2015/04/28 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS