Os requisitos são os seguintes:
Existem cerca de 40 m de arquivos em todo o diretório e existem inúmeros arquivos. Com o passar do tempo, não me lembro em qual arquivo a string está, então. O poderoso e ofuscante Node.js estreou:
Não há diferença entre a instalação do Node.js no Windows e a instalação do software comum. Depois de instalar, abra o atalho para Node.js, ou diretamente CMD, você sabe.
Crie findstring.js
var path = requer ("caminho"); var fs = requer ("fs"); var filepath = process.argv [2]; var LookForString = process.argv [3]; RecursiveReadFile (filepath); função RecursiveReadFile (FILENAME) {if (! fss.existsync (arquivoname)) return; if (isfile (nome do arquivo)) {check (nome do arquivo);} if (isDirectory (nome do arquivo)) {var files = fs.readdirSync (nome do arquivo); files.foreach (function (key) {var temp = path.jOin (fileName, val); if (isDirectory) {temp) Verifique (temp);})}} verificação da função (nome do arquivo) {var data = readfile (nome do arquivo); var exc = new regexp (LookingForString); if (exc.Test (dados)) console.log (fileName);} função isdirectory (fileName) {se (fs.xistsSynnn); fs.statsync (nome do arquivo) .isdirectory ();} função isfile (nome do arquivo) {if (fs.existsSync (nome do arquivo)) retorna fs.statsync (nome do arquivo) .isfile ();} função readfile (filename) {if (fs.existsync ();} function) fs.readfilesync (nome do arquivo, "utf-8");}Dois parâmetros: o primeiro parâmetro é "Nome da pasta" e o segundo parâmetro é "a sequência que você está procurando"
Como mostrado na imagem:
Imprima o caminho do arquivo, termine o trabalho. A velocidade é realmente feroz, ofuscando os olhos. . . Se você usar a pesquisa de texto completo Java, você ficará infeliz ...
Nodejs Search, Leia e gravar arquivos
(1), processamento de caminho
1. Primeiro de tudo, precisamos prestar atenção à normalização dos caminhos de arquivo. O NodeJS nos fornece o módulo de caminho. O método normolize pode nos ajudar a normalizar o caminho:
var path = requer ('path'); path.Normalize ('/foo/bar/nor/faz/..'); ->/foo/bar/nem2. Claro, há também o caminho de junção de mesclagem:
var path = requer ('path'); path.Join ('/foo', 'bar', 'baz/asdf', 'trounch', '..'); ->/foo/bar/baz/asdf3. Caminho
var path = requer ('caminho'); path.resolve ('/foo/bar', './baz'); ->/foo/bar/bazpath.resolve ('/foo/bar', '/tmp/file/'); ->/tmp/arquivo4. Encontre caminhos relativos entre dois caminhos relativos
var path = requer ('path'); path.Relative ('/data/ORANDEA/TEST/AAA', '/Data/ORANDEA/Impl/BBB'); -> ../../ impl/bbb5. Extraia o caminho
var path = requer ('path'); path.dirname ('/foo/bar/baz/asdf/quasetxt'); ->/foo/bar/baz/asdf ============================================ Var PATH = requer ('path'); path.basename ('/foo/bar/baz/asdf/quux.htmmml')Você pode até remover o nome do sufixo, basta passar o segundo parâmetro no nome da base, e o parâmetro é o nome do sufixo, por exemplo:
var caminho = requer ('caminho');
path.basename ('/foo/bar/baz/asdf/quasehtml', '.html'); -> Quux
Obviamente, pode haver vários arquivos diferentes no caminho do arquivo, e é impossível que codifiquemos o sufixo para obter os resultados que desejamos.
Portanto, existe uma maneira de obter o nome do sufixo para nós:
path.extName ('/a/b/index.html'); // => '.html'
path.extName ('/a/bc/index'); // => ''
path.extName ('/a/bc/.'); // => ''
path.extName ('/a/bc/d.'); // => '.'
(2), processamento de arquivos
var fs = requer ('fs');
1. Determine se o arquivo existe
fs.exists (caminho, função (existe) {});
A interface acima é assíncrona, portanto, existem funções de retorno de chamada, que podem lidar com várias operações no retorno de chamada. Se você precisar sincronizar operações, pode usar o seguinte método:
fs.existsSync (caminho);
2. Leia as informações do status do arquivo
fs.stat (path, function (err, stats) {if (err) {tiro err;} console.log (stats);});O conteúdo dos estados de saída do console é aproximadamente o seguinte:
{Dev: 234881026, Ino: 95028917, Modo: 33188, Nlink: 1, UID: 0, GID: 0, RDEV: 0, Tamanho: 5086, Blksize: 4096, Blocks: 0, ATime: Fri, 18 de novembro de 2011 22:44:47 Gmt, Mtime: 0, 0, 0: Fri, 18 de novembro de 2011:44:47: 40:010: 081010:Ao mesmo tempo, as estatísticas também têm alguns métodos, como:
stats.isfile (); stats.isdirectory (); stats.isBlockDevice (); stats.ischaracterDevice (); stats.issymBolicLink (); stats.isfifo (); stats.issocket (); err, fd) fd.open ('/path/path/file', 'r', function (err (err, fd) {para/path/path/path/path/path););O segundo parâmetro é o tipo de operação:
R: Leia apenas
R+: Leia e escreva
W: reescrever o arquivo
w+: reescreva o arquivo, crie -o se o arquivo não existir
R: Leia e escreva arquivos, adicione -os no final do arquivo
A+: Leia e escreva arquivos, crie -os se o arquivo não existir
Aqui está um pequeno exemplo de leitura de um arquivo:
var fs = requer ('fs'); fs.open ('./ noderead.html', 'r', função aberta (err, fd) {if (err) {throw err} var readBuffer = new buffer (1024), bufferoffset = 0, bufferLength = readbuffer.length, filePosition = 100; Fs.read (buffer, buffer, readbuffer, readbuffer, comprimento, filtro, fD.Fester, buffer, readbuffer, readbuffer. Readbytes) {if (err) {throw err;Aqui está um pequeno exemplo de escrever um arquivo:
var fs = requer ('fs'); fs.open ('./ my_file.txt', 'a', função aberta (err, fd) {if (err) {tiro err;} var writebuffer = new buffer ('hello, mundal! function (err, escrito) {if (err) {tiro err;Para operações de leitura e gravação de arquivos, não devemos esquecer de executar uma operação estreita depois que todas essas operações forem concluídas, ou seja, Close (); A seguir, é apresentado um método encapsulado, que inclui a operação pós-fechamento do arquivo, que é conveniente para usar:
var fs = requer ('fs'); function OpenAndWritEToSystemLog (WriteBuffer, retorno de chamada) {fs.open ('./ my_file', 'a', function (err, fd) {if (err) {return callback (err);} função notifyError (err) {fs.close (fd, function () {{};};}; WriteBuffer.Length, FilePosition = NULL; }); OpenAndWriteToSystemLog (novo buffer ('escrevendo esta string'), function (err) {if (err) {console.log ("erro ao abrir e escrever:", err.message); return;} console.log ('tudo feito sem erros');});