Требования следующие:
Во всем каталоге насчитывается около 40 м файлов, и есть бесчисленное количество файлов. Со временем я не могу вспомнить, в каком файле находится строка, так что. Мощный, ослепительный узел дебютировал:
Нет никакой разницы между установкой node.js в Windows и установкой обычного программного обеспечения. Вы знаете, после установки откройте ярлык для node.js или непосредственно CMD.
Создать findstring.js
var path = require ("path"); var fs = require ("fs"); var filepath = process.argv [2]; var wyselforstring = process.argv [3]; recursieDeadFile (filePath); функция recurseAdeadfile (fileName) {if (! fsexistsyssync (filename))) return; if (isfile (filename)) {check (filename);} if (isdirectory (filename)) {var files = fs.readdirshync (filename); files.foreach (al, val, key) {var temp = path.join (filename, val); if (iSdirectory (tempore)) Проверьте (temp);})}} проверка функции (fileName) {var data = readfile (filename); var exc = new Regexp (LookingForString); if (excStest (data)) console.log (fileName);} функция isDirectory (filename) {if (fs.existssync (filename) fs.statsync (filename) .isdirectory ();} function isfile (имя файла) {if (fs.existssync (filename)) return fs.statsync (filename) .isfile ();} function readfile (filename) {if (fs.existssync (filename) fs.readfilesync (имя файла, "UTF-8");}Два параметра: первый параметр - «имя папки», а второй параметр - это «строка, которую вы ищете»
Как показано на картинке:
Распечатайте путь к файлу, завершите работу. Скорость действительно жесткая, ослепляя глаза. Полем Полем Если вы используете полный текстовый поиск Java, вы будете несчастны ...
Nodejs Search, Reading and Write Files
(1), обработка пути
1. Прежде всего, нам нужно обратить внимание на нормализацию путей файла. Nodejs предоставляет нам модуль Path. Метод нормолиза может помочь нам нормализовать путь:
var path = require ('path'); path.normalize ('/foo/bar/nor/faz/..'); ->/foo/bar/nor2. Конечно, есть также путь слияния:
var path = require ('path'); path.join ('/foo', 'bar', 'baz/asdf', 'quux', '..'); ->/foo/bar/baz/asdf3. Путь
var path = require ('path'); path.resolve ('/foo/bar', './baz'); ->/foo/bar/bazpath.resolve ('/foo/bar', '/tmp/file/'); ->/tmp/файл4. Найдите относительные пути между двумя относительными путями
var path = require ('path'); path.relative ('/data/orandea/test/aaa', '/data/orandea/inmp/bbb'); -> ../../ IMPL/BBB5. Извлеките путь
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', '.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 (существует) {});
Приведенный выше интерфейс является асинхронным, поэтому существуют функции обратного вызова, которые могут обрабатывать различные операции в обратном вызове. Если вам нужно синхронизировать операции, вы можете использовать следующий метод:
fs.existssync (path);
2. Прочтите информацию о состоянии файла
fs.stat (path, function (err, stats) {if (err) {throw err;} console.log (stats);});Содержание состояний консоли вывода примерно следующим образом:
{dev: 234881026, INO: 95028917, режим: 33188, Nlink: 1, UID: 0, GID: 0, RDEV: 0, размер: 5086, BLKSIZE: 4096, блоки: 0, Atime: FRI, 18 ноября 2011 г.В то же время, статистика также имеет некоторые методы, такие как:
stats.isfile (); stats.isdirectory (); stats.isblockdevice (); stats.ischaracterdevice (); stats.issymboliclink (); stats.isfifo (); stats.issocket ();. Читать и записать файлы fs.open ('/path/to/file', 'r', function (err, fd) {// todo);Второй параметр - тип операции:
R: только читать
r+: читать и написать
W: переписать файл
w+: переписать файл, создайте его, если файл не существует
A: Читать и записать файлы, добавьте их в конце файла
a+: читать и записать файлы, создайте их, если файла не существует
Вот небольшой пример чтения файла:
var fs = require ('fs'); fs.open ('./ noderead.html', 'r', функция открыта (err, fd) {if (err) {throw err} var readbuffer = new Buffer (1024), bufferoffset = 0, bufferlength = readbuffer.length, fileposition = 100; fs. readefort (fd, readbuffer, bufferffer, bufferlength, filepostosity, filposition, filepestose, filepostis readbytes) {if (err) {throw err;Вот небольшой пример написания файла:
var fs = require ('fs'); fs.open ('./ my_file.txt', 'a', функция открыта (err, fd) {if (err) {throw err;} var writebuffer = new Buffer ('hello, world!'), bufferposition = 0, bufferlength = write buffer.length, fileposition = nul function (err, worpend) {if (err) {throw err;Для операций чтения и записи файла мы не должны забывать выполнять тесную операцию после завершения всех этих операций, то есть Close (); Ниже приведен инкапсулированный метод, который включает в себя операцию после закрытия файла, который удобен в использовании:
var fs = require ('fs'); Функция OpenAndWriteTosyStemLog (writebuffer, callback) {fs.open ('./ my_file', 'a', function (err, fd) {if (err) {return callback (err);} функция notifyerr (err) {fs.close (fd, function () {callback (err);}); writebuffer.length, filePosition = null; }); OpenAndWriteTosyStemLog (New Buffer ('написание этой строки'), function (err) {if (err) {console.log ("ошибка во время открытия и написания:", err.message); return;} console.log ('все сделано без ошибок');});