المتطلبات على النحو التالي:
هناك حوالي 40 متر من الملفات في الدليل بأكمله ، وهناك عدد لا يحصى من الملفات. مع مرور الوقت ، لا يمكنني تذكر الملف الذي يوجد فيه السلسلة ، لذلك. ظهرت Node.js القوية والعمى:
لا يوجد فرق بين تثبيت Node.js في Windows وتثبيت البرامج العادية. بعد التثبيت ، افتح الاختصار إلى Node.js ، أو CMD مباشرة ، كما تعلمون.
إنشاء findString.js
var path = require ("path") ؛ var fs = require ("fs") ؛ var filepath = process.argv [2] إرجاع ؛ if (if (isfile (filename))) {check (filename) ؛} if (iSdirectory (filename)) {var files = fs.readdirsync (filename) ؛ files.foreach (temp) تحقق (temp) ؛})}} check (filename) {var data = readfile (filename) ؛ var exc = new regexp (lookingforsstring) ؛ if (exc.test (data)) console.log (filename) ؛ Fs.Statsync (اسم الملف) .isdirectory () ؛ fs.readfilesync (اسم الملف ، "UTF-8") ؛}معلمتان: المعلمة الأولى هي "اسم المجلد" والمعلمة الثانية هي "السلسلة التي تبحث عنها"
كما هو موضح في الصورة:
اطبع مسار الملف ، وينتهي من العمل. السرعة شرسة حقا ، تعمي العيون. . . إذا كنت تستخدم البحث عن النص Java ، فستكون بائسة ...
بحث Nodejs وقراءة وكتابة الملفات
(1) ، معالجة المسار
1. أولاً وقبل كل شيء ، نحتاج إلى الانتباه إلى تطبيع مسارات الملفات. يوفر لنا Nodejs وحدة المسار. يمكن أن تساعدنا طريقة normolize في تطبيع المسار:
var path = require ('path') ؛ path.normalization ('/foo/bar/nor/faz/..') ؛ ->/foo/bar/no2. بالطبع ، هناك أيضًا مسار دمج الانضمام:
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/file4. ابحث عن المسارات النسبية بين مسارين نسبيين
var path = require ('path') ؛ path.ration ('/data/orandea/test/aaa' ، '/data/orandea/imment/bbb') ؛ -> ../../ INM/BBB5. استخراج المسار
var path = require ('path') ؛ path.dirname ('/foo/bar/baz/asdf/quux.txt') ؛ ->/foo/bar/baz/asdf ================================================ var path = requist ('path')يمكنك حتى إزالة اسم لاحقة ، فقط تمرير المعلمة الثانية في الاسم الأساسي ، والمعلمة هي اسم لاحقة ، على سبيل المثال:
var path = required ('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 (المسار ، الدالة (موجودة) {}) ؛
الواجهة أعلاه غير متزامنة ، لذلك هناك وظائف رد الاتصال ، والتي يمكنها التعامل مع مختلف العمليات في رد الاتصال. إذا كنت بحاجة إلى مزامنة العمليات ، فيمكنك استخدام الطريقة التالية:
fs.existssync (المسار) ؛
2. اقرأ معلومات حالة الملف
fs.stat (المسار ، الدالة (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 ، block: 0 ، atime: fri ، 18 نوفمبر 2011 22:44:47 gmt ، mtime: thu ، 08 sep 2011 23:في الوقت نفسه ، تحتوي الإحصائيات أيضًا على بعض الطرق ، مثل:
STATs.isfile () ؛ Stats.isDirectory () ؛ STATS.ISBlockDevice () ؛ STATS.ISCHARACTERDEVICE () ؛ STATS.ISSYMBOLICLINK () ؛ STATS.ISFIFO () ؛ STATS.ISCOCKETING () ؛
المعلمة الثانية هي نوع العملية:
R: اقرأ فقط
R+: اقرأ واكتب
W: أعد كتابة الملف
W+: أعد كتابة الملف ، قم بإنشائه إذا لم يكن الملف موجودًا
ج: اقرأ وكتابة الملفات ، أضفها في نهاية الملف
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.Read (v ، readbuffer ، bufferoff ، filterloft ، readBytes) {if (err) {throw err ؛فيما يلي مثال صغير لكتابة ملف:
var fs = require ('fs') ؛ fs.open ('./ my_file.txt' ، 'a' ، وظيفة فتح (err ، fd) {if (err) {throw err ؛} var tructionbuffer = new buffer ('hello ، world!') دالة (err ، مكتوبة) {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) ؛ liteBuffer.length ، fileposition = null ؛ }) ؛ OpenAndWritEtOsystemLog (New Buffer ('كتابة هذه السلسلة') ، function (err) {if (err) {console.log ("خطأ أثناء الفتح والكتابة:" ، err.message) ؛ return ؛} console.log ('كل شيء لا مع عدم وجود أخطاء) ؛}) ؛