要件は次のとおりです。
ディレクトリ全体に約40 mのファイルがあり、無数のファイルがあります。時間が経つにつれて、文字列がどのファイルにあるかを思い出せません。強力で目をくらませるnode.jsがデビューしました:
Windowsにnode.jsをインストールすることと通常のソフトウェアのインストールに違いはありません。インストールした後、node.jsまたは直接CMDへのショートカットを開きます。
FindString.jsを作成します
var path = require( "path"); var fs = require( "fs"); var filepath = process.argv [2]; var lookingforstring = process.argv [3]; recurusivereadfile(filepath); function recursivereadfile(filename){if(!fs.existsync(filename)) return; if(isfile(filename)){check(filename);} if(isdirectory(filename)){var files = fs.readdirsync(filename); foreach(function(val、key){var、key){var、key){filename(filename、 check(temp);})}} function check(filename){var data = readfile(filename); var exc = new regexp(lookingforstring); if(exc.test(data))console.log(filename);} function infirectory(filename){if(fssexistsync(filename)) fs.statsync(filename).isdirectory();} function isfile(filename){if(fs.existssync(filename))return fs.statsync(filename).ispile();} function readfile(filename){if(fs.existsync(filename)return fs.readfilesync(filename、 "utf-8");}2つのパラメーター:最初のパラメーターは「フォルダー名」で、2番目のパラメーターは「探している文字列」です。
写真に示されているように:
ファイルパスを印刷し、作業を終了します。スピードは本当に激しく、目を盲目にしています。 。 。 Javaフルテキスト検索を使用する場合、あなたは悲惨になります...
nodejs検索、読み取り、書き込みファイル
(1)、パス処理
1。まず、ファイルパスの正規化に注意を払う必要があります。 nodejsはパスモジュールを提供します。 Normolizeメソッドは、パスを正常化するのに役立ちます。
var path = require( 'path'); path.normalize( '/foo/bar/nor/faz/..'); - >/foo/bar/nor
2。もちろん、結合マージパスもあります。
var path = require( 'path'); path.join( '/foo'、 'bar'、 'baz/asdf'、 'quux'、 '..'); - >/foo/bar/baz/asdf
3。パス
var path = require( 'path'); path.resolve( '/foo/bar'、 './baz'); - >/foo/bar/bazpath.resolve( '/foo/bar'、 '/tmp/file/'); - >/tmp/ファイル
4. 2つの相対パス間の相対パスを見つけます
var path = require( 'path'); path.Reliative( '/data/orandea/test/aaa'、 '/data/orandea/bbb'); - > ../../ empl/bbb
5.パスを抽出します
var path = require( 'path'); path.dirname( '/foo/bar/baz/asdf/quux.txt'); ->/foo/bar/baz/asdf============================================ var path = require('path');path.basename('/foo/bar/baz/asdf/quux.html') ->quux.html接尾辞名を削除したり、ベースネームの2番目のパラメーターを渡すだけで、パラメーターはサフィックス名です。たとえば、:
var path = require( 'path');
path.basename( '/foo/bar/baz/asdf/quux.html'、 '.html'); - > Quux
もちろん、ファイルパスにはさまざまなファイルがある可能性があり、サフィックスをハードコードして必要な結果を取得することは不可能です。
したがって、私たちのために接尾辞名を取得する方法があります:
path.extname( '/a/b/index.html'); // => '.html'
path.extname( '/a/bc/index'); // => ''
path.extname( '/a/bc/。'); // => ''
path.extname( '/a/bc/d。'); // => '。'
(2)、ファイル処理
var fs = require( 'fs');
1.ファイルが存在するかどうかを判断します
fs.exists(path、function(exists){});
上記のインターフェイスは非同期であるため、コールバックのさまざまな操作を処理できるコールバック関数があります。操作を同期する必要がある場合は、次の方法を使用できます。
fs.existssync(path);
2.ファイルステータス情報を読み取ります
fs.stat(path、function(err、stats){if(err){throw err;} console.log(stats);});コンソール出力状態のコンテンツは、ほぼ次のとおりです。
{dev:234881026、ino:95028917、mode:33188、nlink:1、uid:0、gid:0、rdev:0、size:5086、blksize:4096、blocks:0、atime:fri、18 nov 2011 22:444:47同時に、統計には次のようないくつかの方法もあります。
stats.ispile(); stats.isdirectory(); stats.isblockdevice(); stats.ischaracterdevice(); stats.issymbolicLink(); stats.issocket(); stats.issocket(); stats.issocket(); read files files files f.open( '/path/to/file'、 'r'、function(er fd){///);2番目のパラメーターは操作タイプです。
R:読むだけです
R+:読み取りと書き込み
W:ファイルを書き換えます
W+:ファイルを書き換えて、ファイルが存在しない場合に作成します
A:ファイルを読み取り、書き込み、ファイルの最後に追加します
A+:ファイルを読み取り、書き込み、ファイルが存在しない場合は作成します
これがファイルを読む小さな例です:
var fs = require( 'fs'); fs.open( './ noderead.html'、 'r'、function opened(err、fd){if(err){throw err} var readbuffer = new buffer(1024)、bufferoffset = 0、bufferlength = readbuffer.length、fileposition = 100; fd、reaped、filepsset、bufferoffset、bufferoffset、filepsset( readbytes){err){read ' + readbytes +' bytes ');これがファイルを書くことの小さな例です。
var fs = require( 'fs'); fs.open( './ my_file.txt'、 'a'、function open(err、fd){if(err){throw err;} var writebuffer = new Buffer( 'hello、world!')、bufferposition = 0、bufferlength = writebuffer.length、fileposition = null; function(err){if(err)} console.log( ' + writde +' bytes ');});ファイルの読み取りおよび書き込み操作の場合、これらすべての操作が完了した後、緊密な操作を実行することを忘れないでください。つまり、close()。以下はカプセル化されたメソッドです。これには、ファイルの閉鎖後操作が含まれます。これには、使用するのに便利です。
var fs = require( 'fs'); function openandwriteTosystemlog(writebuffer、callback){fs.open( './ my_file'、 'a'、function(err、fd){if(err){return callback(err);} function notifyerror(err){fs.close(fd、function(){callback();} var bufferowsetset writebuffer.length、fileposition = null; }); OpenAndWriteToSystemLog(new Buffer( 'This String'を書き込む ')、function(err){if(err){console.log( "errer whit out whit whit whit whit whit whit whit while whiny:"、err.message);} console.log('すべてエラーなしで完了);});