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 相关文章推荐
修改发贴的编辑功能
Mar 07 Javascript
js实现的日期操作类DateTime函数代码
Mar 16 Javascript
动态调用CSS文件的JS代码
Jul 29 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
Mar 04 Javascript
javascript模块化是什么及其优缺点介绍
Sep 02 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
Mar 21 Javascript
动态显示可输入的字数提示还可以输入的字数
Apr 01 Javascript
jquery中map函数与each函数的区别实例介绍
Jun 23 Javascript
Vue组件之极简的地址选择器的实现
May 31 Javascript
微信小程序配置服务器提示验证token失败的解决方法
Apr 03 Javascript
vuex存取值和映射函数使用说明
Jul 24 Javascript
JavaScript array常用方法代码实例详解
Sep 02 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实现的下载css文件中的图片的代码
2010/02/08 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
php实现无限级分类查询(递归、非递归)
2016/03/10 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
一个实用的php验证码类
2017/07/06 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
jQuery Ajax使用实例
2015/04/16 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
javascript实现加载xml文件的方法
2015/11/24 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
vuex的使用和简易实现
2021/01/07 Vue.js
[02:00]DAC2018主宣传片——龙征四海,剑问东方
2018/03/20 DOTA
Python中函数的用法实例教程
2014/09/08 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Python创建xml文件示例
2017/03/22 Python
python使用Tkinter实现在线音乐播放器
2018/01/30 Python
Python threading的使用方法解析
2019/08/28 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
浅谈django channels 路由误导
2020/05/28 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
《临死前的严监生》教学反思
2014/02/13 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
教务处教学工作总结
2015/08/10 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript
MySQL创建定时任务
2022/01/22 MySQL
教你如何用cmd快速登录服务器
2022/06/10 Servers
Python实现数据的序列化操作详解
2022/07/07 Python