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
Sep 24 Javascript
jquery实现瀑布流效果分享
Mar 26 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
jquery插件jquery.dragscale.js实现拖拽改变元素大小的方法(附demo源码下载)
Feb 25 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
谈谈第三方App接入微信登录 解读
Dec 27 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
Dec 28 Javascript
swiper插件自定义切换箭头按钮
Dec 28 Javascript
实例解析ES6 Proxy使用场景介绍
Jan 08 Javascript
基于D3.js实现时钟效果
Jul 17 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
Dec 04 Javascript
es6函数name属性功能与用法实例分析
Apr 18 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
如何使用Strace调试工具
2013/06/03 PHP
php 多文件上传的实现实例
2016/10/23 PHP
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
通过jquery获取上传文件名称、类型和大小的实现代码
2018/04/19 jQuery
垃圾回收器的相关知识点总结
2018/05/13 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
Python基于numpy灵活定义神经网络结构的方法
2017/08/19 Python
Django rest framework实现分页的示例
2018/05/24 Python
不管你的Python报什么错,用这个模块就能正常运行
2018/09/14 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
美国最大的珠宝首饰网上商城:Jewelry.com
2016/07/22 全球购物
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
印度低票价航空公司:GoAir
2017/10/11 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
会议接待欢迎词
2014/01/12 职场文书
大学生的创业计划书就该这么写
2014/01/30 职场文书
物联网工程专业推荐信
2014/09/08 职场文书
法院个人总结
2015/03/03 职场文书
质量承诺书格式范文
2015/04/28 职场文书
2019年大学毕业生个人自我鉴定范文大全
2019/03/21 职场文书
广告文案的撰写技巧(实用干货)
2019/08/23 职场文书
Python实战之疫苗研发情况可视化
2021/05/18 Python
详解OpenCV曝光融合
2022/04/29 Python
pytorch实现加载保存查看checkpoint文件
2022/07/15 Python