اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

ال stream هي واجهة تتيح للمبرمج قراءة وكتابة البيانات بشكل متواصل , في العادي إن أردت قراءة ملف ما تقوم بالتالي

fs.readFile('/test.txt, 'utf8' , (err, data) => {
  if (err) {
    console.error(err)
    return
  }
  console.log(data)
})

هنا تقوم الnode js بقراءة الملف كله على الذاكرة ومن ثم يمكنك إجراء العمليات عليه, هنا يوجد مشكلتان

  1. ﻻ يمكنك إجراء عمليات على الملف قبل إنتهاء قرائته كلياً
  2. إن كان حجم الملف كبير لن تستطيع الذاكرة إستيعابه مما قد يؤدى إلى خطأ Stack over flow

ومن هنا يظهر دور الstream حيث تقوم بقراءة البيانات قطعة قطعة

const fileSystem = require("fs");
var data = "";

const readStream = fileSystem.createReadStream("test.txt");

readStream.setEncoding("UTF8");

readStream.on("data", (chunk) => {
	data += chunk;
});

readStream.on("end", () => {
	console.log(data);
});

في هذا الكود قمنا بعمل إستماع للحدث(event listening) حيث كل مرة تصل فيها جزأ من البيانات يتم إطﻻق الحدث وتنفيذ الكود 

readStream.on("data", (chunk) => {
	data += chunk;
});

وعند إنتهاء البيانات يتم إطﻻق حدث الإنتهاء وتنفيذ الكود


readStream.on("end", () => {
	console.log(data);
});

وكما تﻻحظ حتى نستطيع إستخدام الstream قمنا بإنشاء ما يسمى بالreadStream , وهى الstream التي تمكننا من قراءة البيانات ووجه عام يوجد أربع أنواع من الstream

  1. readable stream: مسؤلة عن قراءة البيانات
  2. writable stream: مسؤلة عن كتابة البيانات
  3. duplex stream: يمكنها قراءة البيانات وكتابة البيانات
  4. transform stream: تقوم بقراءة البيانات ومعالجتها بشكلٍ ما ومن ثم كتابتها بعد المعالجة

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...