التدفق في لغة C#: قارئ التدفق والتدفقWriter [مثال]

⚡ ملخص ذكي

تُعدّ خاصية التدفق في AC# طبقة وسيطة بين تطبيقك والملف، تُمكّنك من قراءة البيانات أو كتابتها على دفعات صغيرة. ستتعلم هنا كيفية استخدام StreamReader وStream.Writer العمل، مع أمثلة وأنواع التيار الرئيسي.

  • 🌊 ما هو : التدفق هو طبقة وسيطة بين تطبيقك والملف.
  • ؟؟؟؟ قارئ البث المباشر: يقرأ برنامج StreamReader النص من ملف سطراً واحداً أو جزءاً واحداً في كل مرة.
  • ✍️ شريط الاحداثWriter: شريط الاحداثWriter يكتب نصًا إلى ملف من خلال دفق بيانات.
  • 🧩 أنواع التدفقات: FileStream و MemoryStream و Bufferجميع أنواع edStream مشتقة من فئة Stream.
  • 🤖 مساعدة الذكاء الاصطناعي: تقوم أدوات الذكاء الاصطناعي مثل GitHub Copilot بإنشاء كود C# متدفق على الفور.

قارئ تدفق البيانات بلغة C# و Writer

ما هو تيار C#؟

في عمليات الملفات بلغة C#، تُستخدم التدفقات عادةً لقراءة الملفات وكتابتها. التدفق هو طبقة إضافية يتم إنشاؤها بين التطبيق والملف. يُستخدم التدفق لضمان عمليات قراءة وكتابة سلسة للملف.

تُستخدم التدفقات عادةً عند قراءة البيانات من الملفات الكبيرة. باستخدام التدفقات، يتم تقسيم البيانات من الملفات الكبيرة إلى أجزاء صغيرة وإرسالها إلى التدفق. يمكن بعد ذلك قراءة أجزاء البيانات هذه من التطبيق.

يرجع سبب تقسيمه إلى أجزاء صغيرة إلى تأثير قراءة ملف كبير في لقطة واحدة على الأداء. إذا كنت ستقرأ البيانات من ملف بحجم 100 ميجا بايت على سبيل المثال، دفعة واحدة، فقد يتعطل تطبيقك ويصبح غير مستقر. أفضل طريقة هي استخدام التدفقات لتقسيم الملف إلى أجزاء يمكن التحكم فيها.

لذا، عندما يتم تنفيذ عملية كتابة على ملف، تتم كتابة البيانات المراد كتابتها أولاً في التدفق. ومن التدفق، تتم كتابة البيانات بعد ذلك إلى الملف. وينطبق الأمر نفسه على عملية القراءة. في عملية القراءة، يتم نقل البيانات أولاً من الملف إلى التدفق. ثم تتم قراءة البيانات من التطبيق عبر التدفق. دعنا نلقي نظرة على مثال لكيفية القراءة والكتابة باستخدام التدفقات.

أنواع التدفقات في لغة C#

جميع فئات التدفق في لغة C# مشتقة من الفئة abstract Stream الطبقة في System.IO مساحة الاسم. يستهدف كل نوع مصدر بيانات مختلفًا، لكنهما يشتركان في نفس طرق القراءة والكتابة. فيما يلي قائمة بأكثر أنواع التدفقات استخدامًا.

  • دفق الملف يقرأ من الملفات الموجودة على القرص ويكتب إليها، بايت واحد أو كتلة واحدة في كل مرة.
  • تدفق الذاكرة يقوم بتخزين البيانات في الذاكرة بدلاً من الملف، وهو أمر مفيد للمخازن المؤقتة.
  • BufferedStream يغلف دفقًا آخر لتقليل عدد عمليات القرص أو الشبكة البطيئة.
  • بث الشبكة يرسل ويستقبل البيانات عبر مقبس الشبكة.

للعمل مع النصوص، توفر لغة C# StreamReader و StreamWriter الفئات المساعدة، التي تغلف التدفق، والتي سيتم تناولها في الأقسام التالية.

قارئ الدفق

يتم استخدام قارئ الدفق لقراءة البيانات من ملف باستخدام الدفق. تتم قراءة البيانات من الملف أولاً في الدفق. بعد ذلك يقرأ التطبيق البيانات من الدفق.

على سبيل المثال، سنفترض أن لدينا ملفًا في محرك الأقراص D يسمى example.txt. سيكون الملف عبارة عن ملف نصي بسيط ويحتوي على سطرين كما هو موضح أدناه

  • Guru99 – .Net
  • Guru99 - دو#

على سبيل المثال، سنقوم بإنشاء تطبيق وحدة تحكم بسيط ونعمل مع تدفقات الملفات

دعونا نلقي نظرة على مثال لكيفية استخدام التدفقات لقراءة البيانات من ملف. أدخل الكود أدناه في ملف Program.cs.

قارئ الدفق

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

Code تفسير:-

  1. أولاً، نعلن عن كائن قارئ الدفق. يتم استخدام كائن قارئ الدفق في لغة C# لتحديد دفق من الملف إلى التطبيق. سيتم دفع البيانات من الملف إلى الدفق عند قراءة البيانات من الملف. الملف.OpenText يُستخدم لفتح الملف "Example.txt" في وضع القراءة فقط. يتم بعد ذلك إرسال معالج الملف إلى كائن قارئ الدفق.
  2. بعد ذلك، نقوم بتعريف متغير مؤقت 's' والذي سيتم استخدامه لقراءة كافة البيانات من الملف.
  3. نستخدم بعد ذلك طريقة قارئ الدفق ReadLine لقراءة كل سطر من مخزن الدفق. عندما ننفذ هذه الطريقة عمليةسيتم نقل كل سطر أولاً من الملف إلى المخزن المؤقت. ثم سيتم نقل سطر السلسلة من المخزن المؤقت إلى المتغير 's'. ثم نكتب محتويات السلسلة 's' في وحدة التحكم.

عندما يتم تعيين الكود أعلاه، ويتم تشغيل المشروع باستخدام البصرية ستوديو، سوف تحصل على الناتج أدناه.

انتاج:-

قارئ الدفق

من الإخراج، يمكنك أن ترى أن قارئ الدفق يقرأ كلا السطرين من الملف. وأخيرًا، تم إرسال أسطر السلسلة المقروءة من الدفق إلى وحدة التحكم.

شريط الاحداث Writer

يتم استخدام كاتب الدفق لكتابة البيانات إلى ملف باستخدام التدفقات. تتم كتابة البيانات من التطبيق أولاً في الدفق. بعد ذلك يكتب الدفق البيانات إلى الملف. دعونا نلقي نظرة على مثال لكيفية استخدام التدفقات لكتابة البيانات من ملف. أدخل الكود أدناه في ملف Program.cs.

شريط الاحداث Writer

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

Code تفسير:-

  1. أولاً، نعلن عن كائن كاتب الدفق. يتم استخدام كائن كاتب الدفق في C# لتعريف الدفق. يتم بعد ذلك استخدام الدفق لكتابة البيانات من التطبيق إلى الملف. سيتم دفع البيانات من التطبيق إلى الدفق عندما يلزم كتابة البيانات. يتم استخدام الأمر File.AppendText لفتح الملف "Example.txt" في وضع الإلحاق. يتم بعد ذلك إرسال معالج الملف إلى كائن كاتب الدفق.
  2. نستخدم طريقة الكتابة المتدفقة Writeline لكتابة السطر "Guru99 – ASP.Net” إلى الدفق. ومن الدفق، سيتم كتابة السطر إلى الملف.
  3. ثم نقوم بإغلاق كاتب الدفق بعد الكتابة إلى الملف. من الممارسات الجيدة عادةً إغلاق معالجات الملفات عندما لا يكون الملف مطلوبًا لأغراض الكتابة.
  4. أخيرًا، نقرأ محتويات الملف مرة أخرى ونكتبه في سجل وحدة التحكم. هذا للتحقق مما إذا كان السطر مكتوبًا في الملف.

عندما يتم تعيين الكود أعلاه، ويتم تشغيل المشروع باستخدام Visual Studio، سوف تحصل على الإخراج أدناه.

انتاج:-

شريط الاحداث Writer

من المخرجات، يمكنك أن ترى أن السطر "Guruتمت إضافة السطر "99 – ASP.Net" إلى الملف بنجاح. ويمكن رؤية جميع أسطر النص الثلاثة في وحدة التحكم.

الأسئلة الشائعة

يُعدّ التدفق طبقة وسيطة بين التطبيق والملف. فهو يقسم الملفات الكبيرة إلى أجزاء صغيرة بحيث يمكن قراءة البيانات أو كتابتها دون تحميل الملف بأكمله في الذاكرة.

يقرأ StreamReader البيانات النصية من ملف عبر دفق بيانات. ملف.OpenText تقوم الدالة بإرجاع كائن StreamReader، وتقوم طريقة ReadLine الخاصة به بقراءة الملف سطرًا سطرًا.

شريط الاحداثWriter يكتب بيانات نصية إلى ملف عبر دفق بيانات. تُرجع الدالة File.AppendText كائن دفق بيانات.Writerوتقوم دالة WriteLine الخاصة بها بإرسال كل سطر إلى الملف.

تشمل التدفقات الشائعة FileStream للملفات، وMemoryStream للبيانات الموجودة في الذاكرة، Bufferيُستخدم edStream للتخزين المؤقت، وNetworkStream للمآخذ. جميعها مشتقة من abstracفئة t Stream.

يقرأ FileStream ويكتب البيانات الثنائية الخام إلى ملف، بينما يقوم StreamReader بتغليف دفق البيانات لقراءة النص كأحرف وأسطر. يُعد StreamReader أسهل في التعامل مع ملفات النصوص.

مساعدو الذكاء الاصطناعي مثل GitHub Copilot يُكملون تلقائيًا StreamReader وStreamWriter أضف التعليمات البرمجية، واستخدم كتل التخلص، وقم بإنشاء حلقات قراءة الملفات من تعليق قصير.

نعم. تقوم الأدوات المدعومة بالذكاء الاصطناعي بإنشاء طرق قراءة وكتابة التدفقات، واقتراح التخزين المؤقت للملفات الكبيرة، وإضافة عبارات استخدام بحيث يتم إغلاق التدفقات بأمان.

تقوم عبارة using تلقائيًا بإغلاق وتحرير الدفق عند انتهاء الكتلة، حتى في حالة حدوث خطأ. هذا يحرر مؤشر الملف ويمنع تسرب الموارد.

تلخيص هذه التدوينة بـ: