js达成批量删减BOM文件头,js达成在目录中搜寻有

时间:2019-07-25 17:45来源:2020欧洲杯冠军竞猜官方网站
需求如下: Node.js实现批量去除BOM文件头,node.js去除bom 之前的同事写了一个工具,但有bug,就是在替换文件后原文件的格式变成utf8BOM了,这种带BOM的XML在Mac下可能读取不出来,所以就

需求如下:

Node.js实现批量去除BOM文件头,node.js去除bom

之前的同事写了一个工具,但有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);

之前的同事写了一个工具,但有bug,就是在替换文件后原文件的格式变成utf8 BOM了,这种带BOM的...

function add(a,b){

整个目录下大概有40几M,文件无数,由于时间久了, 记不清那个字符串具体在哪个文件,于是。强大,亮瞎双眼的Node.js闪亮登场。

return a b;

windows下安装Node.js和安装普通软件毫无差别,装完后打开Node.js的快捷方式,或者直接cmd,你懂的。

};

创建findString.js

//process.argv为一个数组

复制代码 代码如下:

// console.log(process.argv);

var path = require("path");
var fs = require("fs");
 
var filePath = process.argv[2];
var lookingForString = process.argv[3];
recursiveReadFile(filePath);
 
function recursiveReadFile(fileName){
 if(!fs.existsSync(fileName)) return;
 if(isFile(fileName)){
  check(fileName);
 }
 if(isDirectory(fileName)){
  var files = fs.readdirSync(fileName);
  files.forEach(function(val,key){
  var temp = path.join(fileName,val);
            if(isDirectory(temp)) recursiveReadFile(temp);
            if (isFile(temp)) check(temp);
  })
 }
}
function check(fileName){
 var data = readFile(fileName);
 var exc = new RegExp(lookingForString);
    if(exc.test(data))
 console.log(fileName);
 
}
function isDirectory(fileName){
    if(fs.existsSync(fileName)) return fs.statSync(fileName).isDirectory();
}
function isFile(fileName){
  if(fs.existsSync(fileName)) return fs.statSync(fileName).isFile();
}
function readFile(fileName){
 if(fs.existsSync(fileName)) return fs.readFileSync(fileName,"utf-8");
}

var arr=process.argv;

两个参数:第一个参数为“文件夹名称” 第二个参数为“你要查找的字符串”

//arr[2]*1  把字符串转化为数字

如图:

var arr1=arr[2]*1;

图片 1

var arr2=arr[3]*1;

打印出文件路径,完事,收工。速度实在是彪悍,亮瞎双眼。。。如果采用java全文搜索,你惨了...

 console.log(add(arr1,arr2));

您可能感兴趣的文章:

  • 浅谈Node.js:fs文件系统模块
  • 基于node.js的fs核心模块读写文件操作(实例讲解)
  • Node.js本地文件操作之文件拷贝与目录遍历的方法
  • Node.js 文件夹目录结构创建实例代码
  • Node.js查找当前目录下文件夹实例代码
  • Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
  • Node.js文件操作详解
  • 在Node.js中实现文件复制的方法和实例
  • 三种Node.js写文件的方式
  • node.js基于fs模块对系统文件及目录进行读写操作的方法详解

node.js模块化接口:

var add=function(a,b){

return a b

};

//暴露接口 模块

module.exports=add;

//c里面调用index里的add

//把index里的add方法暴露出来

//在c里面引入index暴露的方法

//调用

//  ./同级

var sss=require("./index.js");

console.log(sss(5,4))

fs模块搭建案列:

var fs=require("fs");

//读取文件

fs.readFile("./index.html",function(err,data){

if(err){

//throw  抛出错误  ,当错误读取就不在往下读取 并抛出错误信息

throw err;

}

console.log(data);

//console.log(data.toString());

});

写入文件:

var fs=require("fs");

//把内容存放在data中

var  data="这是今天的作业";

//把data传进writeFile里

//./fs2.html将会在Node文件夹里生成一个文件

fs.writeFile("./fs2.html",data,"utf-8",function(err){

if (err) {

throw err;

}

console.log("写入成功了")

});

//修改文件名

fs.rename("./fs2.html","./fs3.html",function(err){

if (err) {

throw err;

}

console.log("写入成功了")

})

创建目录:

var fs=require("fs");

fs.mkdir(__dirname "/nihao1",function(err){

if (err) {

throw err;

}

console.log("你去哪")

})

查询文件信息:

var fs=require("fs");

fs.stat("./fs1.js",function(err,stats){

if (err) {

throw err;

}

console.log(stats);

//isFile()  isDirectory()  返回的都是布尔值

console.log("是不是文件" stats.isFile());

console.log("是不是目录" stats.isDirectory());

})

console.log(add(arr1,arr2));

编辑:2020欧洲杯冠军竞猜官方网站 本文来源:js达成批量删减BOM文件头,js达成在目录中搜寻有

关键词: 欧洲杯竞猜

  • 上一篇:没有了
  • 下一篇:没有了