对Node.js查找字符串的功能分析

对Node.js查找字符串的功能分析
要求如下:

整个目录约40米,该文件是无数的,因为很长一段时间,不记得这串是专门的文件,所以,强大的,blind Node.js glittering:

有间安装Node.js和安装Windows下的普通软件没有任何区别快捷方式加载后打开Node.js,或直接命令,你知道的。

创建findstring.js
var路径=需要(路径);

var =要求(FS );
var文件路径=过程。argv { 2 };

无功lookingforstring =过程。argv { 3 };

recursivereadfile(路径);
功能recursivereadfile(文件名){

如果(!Fs.existsSync()返回文件名);

如果(文件(文件名)){

检查(文件名);

}

如果(判断目录(文件名)){

var文件= fs.readdirsync(文件名);

files.foreach(功能(Val,关键){

VaR的温度= path.join(文件名,瓦迩);

如果(判断目录(临时))recursivereadfile(临时);

如果(文件(临时))检查(临时);

})

}

}

函数检查(文件名){

VaR数据= ReadFile(文件名);

VaR EXC =新的正则表达式(lookingforstring);

如果(exc.test(数据))

console.log(文件名);
}

函数判断目录(文件名){

如果(fs.existssync(文件名))返回fs.statsync(文件名)的IsDirectory();

}

函数文件(文件名){

如果(fs.existssync(文件名))返回fs.statsync(文件名)的IsFile();

}

函数ReadFile(文件名){

如果(fs.existssync(文件名))返回fs.readfilesync(文件名,UTF-8);

}

两个参数:第一个参数是文件夹名和您要查找的字符串的第二个参数

图:
打印出来的文件路径,完成工作速度真的很厉害,亮瞎了双眼…如果你使用java全文本搜索,你惨了…

Nodejs查找,文件的读写

(1)路径处理

1。首先,我们需要关注的文件路径的规范化,为我们提供了路径和Nodejs模块,它可以帮助我们规范路径:
VaR路径=需要('path);

path.normalize( / / /酒吧foo不/ FAZ / ..)-> / / /或酒吧Foo;
2、当然,有一个连接合并路径:
VaR路径=需要('path);

Path.join( / foo,'bar ','baz /航空自卫队,'quux-> / / /巴兹foo酒吧/航空自卫队..);
三.分析路径
VaR路径=需要('path);

Path.resolve( / / foo吧','。 /巴兹);-> / / /巴兹foo的酒吧

Path.resolve( / / foo吧',' / / / tmp文件');-> / / tmp文件
4。在两个相对路径之间找到相对路径
VaR路径=需要('path);

path.relative( / / /测试数据orandea / AAA、 / / /实现数据orandea / BBB);- > .. / / / BBB的实现..
5。提取路径
VaR路径=需要('path);

Path.dirname( / / /巴兹foo酒吧 / / quux ASDF .txt);-> / / /巴兹foo酒吧/航空自卫队

荒凉

VaR路径=需要('path);

Path.basename( / / /巴兹foo酒吧 / / quux asdf。HTML)-> quux.html
即使你也可以删除后缀名,你只需要在basename二参数传递,参数为后缀名,例如:

VaR路径=需要('path);

Path.basename( / / /巴兹foo酒吧 / / quux ASDF .html,.html> quux);

当然,有可能是文件路径的各种文件,这是我们无法硬编码的后缀来获得我们想要的结果。

所以有一种方法可以帮助我们得到后缀名:

Path.extname( / / /指数B。HTML); / / = >HTML。

Path.extname( / / /公元前指数'); / / = >

Path.extname( / / /公元前。'); / / = >

Path.extname( / / / D.公元前'); / / = >'。

(2)文档处理

VaR FS =需要('fs);

1。文档是否存在

fs.exists(路径、功能(存在){ });

以上接口是异步操作,所以有回调函数,它可以处理各种业务在回调。如果我们需要同步操作,我们可以使用以下方法。

Fs.existsSync(路径);

2。读取文件状态信息
fs.stat(路径、功能(呃,STATs){
如果(错误){抛出错误;}
console.log(统计);
});
控制台输出状态的内容如下所示:
{ 234881026,
鲍:95028917,
模式:33188,
Nlink:1,
UID: 0,
Gid:0,
Rdev:0,
尺寸:5086,
中:4096,
区块:0,
Atime:星期五,2011年11月18日22:44:47 GMT,
Mtime:Thu,08 Sep 2011 23:50:04 GMT,
Ctime:Thu,08 Sep 2011 23:50:04 GMT }

同时,统计数据也有一些方法,例如:
stats.isfile();
stats.isdirectory();
stats.isblockdevice();
stats.ischaracterdevice();
Stats.isSymbolicLink();
Stats.isFifo();
stats.issocket();
读写文件

Fs.open( / / /文件路径,R的函数(呃,FD){
});
第二个参数是操作类型

R:只读

R:读写

w:重写文件

重写文件并在文件不存在时创建

答:读写文件,在文件的结尾附加。

+:读写文件,如果文件不存在,就创建它。

下面是读取文件的一个小示例:
VaR FS =需要('fs);
Fs.open('。 / noderead .html,R'功能打开(呃,FD){
如果(错误){抛出错误}
VaR ReadBuffer =新的缓冲区(1024),
bufferoffset = 0,
缓冲区长度= readbuffer.length,
fileposition = 100;
fs.read(FD,
ReadBuffer,
BufferOffset,
BufferLength,
fileposition,
阅读功能(呃,readbytes){
如果(错误){抛出错误;}
console.log(读+ readbytes +字节);
如果(readbytes > 0){
console.log(readbuffer.slice(0,readbytes));
}
});
});

下面是一个写文件的小例子:
VaR FS =需要('fs);
Fs.open('。 / my_file .txt,A,功能打开(呃,FD){
如果(错误){抛出错误;}
无功writebuffer =新的缓冲区(你好,世界!),
bufferposition = 0,
缓冲区长度= writebuffer.length,fileposition = null;
fs.write(FD,
WriteBuffer,
bufferposition,
BufferLength,
fileposition,
函数(错误,写入){
如果(错误){抛出错误;}
console.log('wrote +笔试+字节);
});
});
对于文件读写操作,我们不应该忘记在完成所有这些操作之后关闭操作,即关闭();下面是一种封装方法,其中包括文件的后期关闭操作,这很方便使用。
VaR FS =需要('fs);
功能openandwritetosystemlog(writebuffer,回调){
Fs.open('。 / my_file ',' ',功能(呃,FD){
如果(返回)返回回调(});}
功能notifyerror(ERR){
Fs.close(FD,函数(){(){
回调(错误);
});
}
无功bufferoffset = 0,
BufferLength = writeBuffer.length,
fileposition = null;
fs.write(FD,writebuffer,bufferoffset,缓冲区长度,fileposition,功能(呃,书面){
如果(ERR){ return notifyerror(ERR);}
Fs.close(FD,函数(){(){
回调(错误);
});
});
});
}
openandwritetosystemlog(New Buffer(写作这个字符串),功能(ERR){)
如果(错误){
console.log(错误而开写:
返回;
}
console.log(没有错误);
});
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部