[c#] C # باستخدام تدفقات



3 Answers

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

ستلاحظ أن وظائف القراءة والكتابة كلها موجهة نحو البايت ، على سبيل المثال WriteByte (). لا توجد وظائف للتعامل مع الأعداد الصحيحة ، الخ السلاسل إلخ. هذا يجعل الدفق ذا غاية عامة ، ولكنه أقل تعقيدًا للعمل إذا كنت تريد نقل النص فقط.

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

StreamWriter // Badly named. Should be TextWriter.
StreamReader // Badly named. Should be TextReader.
BinaryWriter
BinaryReader

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

MemoryStream memoryStream = new MemoryStream();
StreamWriter myStreamWriter = new StreamWriter(memoryStream);

تحويل StreamReader و StreamWriter بين الأنواع الأصلية وتمثيل سلسلة الخاصة بهم ثم نقل السلاسل إلى من الدفق والبايت. وبالتالي

myStreamWriter.Write(123);

سوف يكتب "123" (ثلاثة أحرف '1' ، '2' ثم '3') إلى الدفق. إذا كنت تتعامل مع ملفات نصية (مثل html) ، فإن StreamReader و StreamWriter هما الفئة التي ستستخدمها.

بينما

myBinaryWriter.Write(123);

سوف يكتب أربعة بايت يمثل قيمة عدد صحيح 32 بت 123 (0x7B ، 0x00 ، 0x00 ، 0x00). إذا كنت تتعامل مع الملفات الثنائية أو بروتوكولات الشبكة ، فإن BinaryReader و BinaryWriter هما ما يمكنك استخدامه. (إذا كنت تقوم بتبادل البيانات مع شبكات أو أنظمة أخرى ، يجب أن تضع في اعتبارها الأمور endianness ، ولكن هذه وظيفة أخرى).

Question

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

إذا فهمت بشكل صحيح ، فهناك ثلاثة أنواع من الدفق:

  • stream
  • read stream
  • write stream

هل هذا صحيح؟ وعلى سبيل المثال ، ما هو الفرق بين Memorystream و FileStream ؟




دفق هو مجرد تجريد (أو المجمع) على تدفق physical للبايت. يسمى هذا التدفق physical التدفق base stream . لذلك هناك دائما دفق قاعدة التي يتم إنشاء المجمع تيار وبالتالي يتم تسمية المجمع بعد نوع دفق قاعدة أي FileStream ، MemoryStream الخ

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

لماذا تعامل البيانات كتيار - نظرًا لأنه يتم تحميل قطع البيانات عند الطلب ، يمكننا فحص / معالجة البيانات كمقطع بدلاً من تحميل البيانات بالكامل في الذاكرة. هذه هي الطريقة التي تتعامل بها معظم البرامج مع الملفات الكبيرة ، على سبيل المثال تشفير ملف صورة نظام التشغيل.




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




أود أن أبدأ من خلال قراءة على تيارات على MSDN: http://msdn.microsoft.com/en-us/library/system.io.stream.aspx

إن نظام Memorystream و FileStream عبارة عن تدفقات يتم استخدامها للعمل مع الذاكرة الخام والملفات على التوالي ...




Related



Tags

c# c#   stream