"

Stream در سی‌شارپ ,مزایای استفاده از Stream در سی شارپ,متدهای مهم Stream در سی شارپ

Stream در سی‌شارپ

Stream در سی‌شارپ ساختاری برای انتقال و پردازش داده‌ها است که در فایل‌ها، حافظه و ارتباطات شبکه کاربرد دارد.

تیم تحریریه
1
0
20 تیر 1405
لینک کوتاه

Stream در سی‌شارپ

در برنامه‌نویسی، مدیریت داده‌ها یکی از مهم‌ترین بخش‌های توسعه نرم‌افزار است.
زمانی که قصد خواندن یا نوشتن اطلاعات از فایل‌ها، حافظه، شبکه یا سایر منابع داده را داریم، استفاده از Stream در سی‌شارپ اهمیت ویژه‌ای پیدا می‌کند.
Stream یا «جریان داده» مکانیزمی است که امکان انتقال پیوسته داده‌ها بین منبع و مقصد را فراهم می‌کند.
به بیان ساده، Stream یک مسیر ارتباطی برای خواندن و نوشتن اطلاعات محسوب می‌شود.

در فریم‌ورک دات‌نت، کلاس‌های مختلفی برای کار با Stream ارائه شده‌اند که به توسعه‌دهندگان اجازه می‌دهند بدون درگیر شدن با جزئیات سطح پایین سیستم‌عامل، عملیات ورودی و خروجی (I/O) را به شکلی استاندارد انجام دهند.





 

آیا به دنبال یک فرصت عالی برای یادگیری برنامه‌نویسی هستید؟ 🚀

با دوره آموزشی سی‌شارپ ما، شما می‌توانید مهارت‌های خود را به سطح جدیدی ارتقا دهید! این دوره به‌طور کامل طراحی شده تا به شما کمک کند تا از مبتدی تا پیشرفته در دنیای برنامه‌نویسی سی‌شارپ پیش بروید.

👨‍🏫 چرا دوره ما را انتخاب کنید؟

  • محتوای جامع و عملی: با پروژه‌های واقعی و تمرینات عملی، یادگیری را به تجربه‌ای جذاب تبدیل کنید.
  • مدرس مجرب: از تجربه و دانش مدرس حرفه‌ای بهره‌مند شوید که شما را در هر مرحله از یادگیری راهنمایی می‌کنند.
  • پشتیبانی ۲۴/۷: هر زمان که سوالی داشتید، ما در کنار شما خواهیم بود تا به شما کمک کنیم.
  • دسترسی مادامالعمر: به محتوای دوره دسترسی دائمی داشته باشید و هر زمان که خواستید، می‌توانید به آن مراجعه کنید.

💡 فرصت را از دست ندهید!

بایادگیری سی‌شارپ، می‌توانید در دنیای فناوری اطلاعات به یک متخصص تبدیل شوید و در پروژه‌های جذاب و چالش‌برانگیز شرکت کنید.

همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده‌ای روشن‌تر بردارید!

شرکت در دوره آموزش برنامه نویسی سی شارپ





Stream چیست؟

Stream یک کلاس انتزاعی (Abstract Class) در فضای نام System.IO است که مبنای تمام عملیات خواندن و نوشتن داده‌ها در دات‌نت محسوب می‌شود.
این کلاس امکاناتی برای خواندن، نوشتن، جابه‌جایی مکان فعلی (Seek) و مدیریت داده‌ها فراهم می‌کند.

در واقع Stream داده‌ها را به صورت دنباله‌ای از بایت‌ها مدیریت می‌کند.
فرقی ندارد داده‌ها از یک فایل، حافظه RAM، شبکه یا دستگاه دیگری دریافت شوند؛ در نهایت همه آن‌ها به شکل یک Stream قابل پردازش هستند.

 

مزایای استفاده از Stream در سی شارپ

استفاده از Stream مزایای متعددی دارد:

  • کاهش مصرف حافظه

    در فایل‌های بزرگ نیازی نیست کل فایل در حافظه بارگذاری شود. Stream داده‌ها را به صورت بخش‌بخش پردازش می‌کند.
  • افزایش کارایی

    عملیات خواندن و نوشتن به صورت تدریجی انجام می‌شود و عملکرد برنامه بهبود پیدا می‌کند.
  • انعطاف‌پذیری بالا

    امکان کار با انواع منابع داده مانند فایل، حافظه، شبکه و فشرده‌سازی وجود دارد.
  • قابلیت توسعه

    توسعه‌دهندگان می‌توانند Streamهای سفارشی ایجاد کنند.





مزایای استفاده از Stream در سی شارپ



فضای نام مورد نیاز

برای استفاده از Stream باید فضای نام زیر را اضافه کنید:

using System.IO;

 

ویژگی‌های مهم Stream

کلاس Stream دارای چند ویژگی مهم است:

  • CanRead

    مشخص می‌کند آیا امکان خواندن داده وجود دارد یا خیر.

 

stream.CanRead
  • CanWrite

    مشخص می‌کند آیا می‌توان داده نوشت.

 

stream.CanWrite
  • CanSeek

    مشخص می‌کند آیا امکان جابه‌جایی در موقعیت داده وجود دارد.

 

stream.CanSeek
  • Length

    طول کل داده را بر حسب بایت برمی‌گرداند.

 

stream.Length
  • Position

    موقعیت فعلی خواندن یا نوشتن را نشان می‌دهد.
stream.Position

 

متدهای مهم Stream در سی شارپ

  • Read

    برای خواندن داده استفاده می‌شود.
stream.Read(buffer, 0, buffer.Length);

 

  • Write

    برای نوشتن داده استفاده می‌شود.
stream.Write(buffer, 0, buffer.Length);

 

  • Seek

    برای تغییر مکان فعلی در Stream کاربرد دارد.
stream.Seek(0, SeekOrigin.Begin);
  • Flush

    اطلاعات موجود در بافر را ذخیره می‌کند.
stream.Flush();

 

  • Close

    Stream را می‌بندد.
stream.Close();





متدهای مهم Stream در سی شارپ



انواع Stream در سی‌شارپ

دات‌نت چندین نوع Stream مختلف ارائه می‌دهد.

 
  • FileStream

    یکی از پرکاربردترین انواع Stream است که برای کار با فایل‌ها استفاده می‌شود.
    نمونه ایجاد FileStream:
FileStream fs = new FileStream(

"data.txt",

FileMode.OpenOrCreate,

FileAccess.ReadWrite

);

 

نوشتن اطلاعات در فایل

using System.Text;

using System.IO;




string text = "Hello World";




byte[] data = Encoding.UTF8.GetBytes(text);




using(FileStream fs = new FileStream(

"test.txt",

FileMode.Create))

{

fs.Write(data, 0, data.Length);

}

 

در این مثال رشته متنی به بایت تبدیل شده و داخل فایل ذخیره می‌شود.

 

خواندن اطلاعات از فایل

using System.Text;

using System.IO;




using(FileStream fs = new FileStream(

"test.txt",

FileMode.Open))

{

byte[] data = new byte[fs.Length];




fs.Read(data, 0, data.Length);




string text = Encoding.UTF8.GetString(data);




Console.WriteLine(text);

}

 

  • MemoryStream

MemoryStream داده‌ها را به جای فایل در حافظه RAM نگهداری می‌کند.
این نوع Stream برای پردازش موقت داده‌ها بسیار مناسب است.
using MemoryStream ms = new MemoryStream();


byte[] data = {1,2,3,4,5};


ms.Write(data,0,data.Length);


مزایای MemoryStream

  • سرعت بسیار بالا

  • عدم نیاز به فایل فیزیکی

  • مناسب برای پردازش تصاویر

  • مناسب برای تبدیل داده‌ها



مثال MemoryStream

using System.IO;

using System.Text;




MemoryStream ms = new MemoryStream();




string text = "Stream Example";




byte[] bytes =

Encoding.UTF8.GetBytes(text);




ms.Write(bytes,0,bytes.Length);




ms.Position = 0;




byte[] result =

ms.ToArray();




Console.WriteLine(

Encoding.UTF8.GetString(result)

);

 

  • BufferedStream

BufferedStream برای افزایش سرعت عملیات خواندن و نوشتن استفاده می‌شود.
این کلاس از یک بافر داخلی بهره می‌گیرد و تعداد دسترسی‌های مستقیم به دیسک را کاهش می‌دهد.
 
FileStream fs =

new FileStream("data.txt",

FileMode.Open);




BufferedStream bs =

new BufferedStream(fs);
  • NetworkStream

برای ارسال و دریافت داده از طریق شبکه استفاده می‌شود.
این Stream معمولاً همراه کلاس TcpClient کاربرد دارد.
TcpClient client =

new TcpClient("localhost",5000);




NetworkStream ns =

client.GetStream();

 

  • CryptoStream

برای رمزنگاری و رمزگشایی داده‌ها استفاده می‌شود.

CryptoStream cryptoStream =

new CryptoStream(

stream,

encryptor,

CryptoStreamMode.Write);

 

  • GZipStream

برای فشرده‌سازی داده‌ها کاربرد دارد.

GZipStream gzip =

new GZipStream(

fileStream,

CompressionMode.Compress);




انواع Stream در سی‌شارپ



StreamReader و StreamWriter

کار کردن مستقیم با بایت‌ها همیشه راحت نیست.
برای خواندن و نوشتن متن می‌توان از StreamReader و StreamWriter استفاده کرد.

 

  • استفاده از StreamWriter

using(StreamWriter writer =

new StreamWriter("test.txt"))

{

writer.WriteLine("Hello");

}
  • استفاده از StreamReader

using(StreamReader reader =

new StreamReader("test.txt"))

{

string text = reader.ReadToEnd();




Console.WriteLine(text);

}



تفاوت Stream و StreamReader

Stream  StreamReader
با بایت کار می‌کند  با متن کار می‌کند
سطح پایین‌تر است  سطح بالاتر است
انعطاف‌پذیرتر است  استفاده آسان‌تر دارد
برای همه داده‌ها مناسب است  برای داده‌های متنی مناسب است



مدیریت منابع با using

یکی از بهترین روش‌ها برای کار با Stream استفاده از بلوک using است.

 

using(FileStream fs =

new FileStream("file.txt",

FileMode.Open))

{

}

 

مزیت این روش این است که پس از پایان کار، منابع سیستم به صورت خودکار آزاد می‌شوند.

 

عملیات Asynchronous روی Stream

در برنامه‌های مدرن استفاده از متدهای Async اهمیت زیادی دارد.

  • نوشتن غیرهمزمان

 

await fs.WriteAsync(

buffer,

0,

buffer.Length

);

 

  • خواندن غیرهمزمان

await fs.ReadAsync(

buffer,

0,

buffer.Length

);

 

چرا Async مهم است؟

  • جلوگیری از قفل شدن رابط کاربری

  • افزایش سرعت برنامه

  • بهبود عملکرد سرور

  • استفاده بهتر از منابع سیستم



مدیریت Position در Stream

هر Stream دارای یک اشاره‌گر داخلی است که مکان فعلی را نگهداری می‌کند.

 

stream.Position = 0;

 

برای بازگشت به ابتدای فایل:

 

stream.Seek(

0,

SeekOrigin.Begin

);



نکات مهم هنگام استفاده از Stream

  • همیشه Stream را ببندید

 

stream.Close();
  • یا از using استفاده کنید.
  • از Async استفاده کنید
  • در فایل‌های بزرگ عملکرد بسیار بهتری خواهید داشت.
  • اندازه بافر مناسب انتخاب کنید
  • بافرهای خیلی کوچک یا خیلی بزرگ می‌توانند عملکرد را کاهش دهند.
  • خطاها را مدیریت کنید
try

{

}

catch(IOException ex)

{

Console.WriteLine(ex.Message);

}


کاربردهای Stream در پروژه‌های واقعی

در پروژه‌های عملی تقریباً همه جا با Stream مواجه می‌شویم:

 

  • آپلود فایل در وب‌سایت

  • دانلود فایل از اینترنت

  • ذخیره تصاویر

  • پردازش PDF

  • ارتباطات شبکه

  • وب‌سرویس‌ها

  • فشرده‌سازی فایل‌ها

  • رمزنگاری اطلاعات

  • تولید فایل‌های Excel

  • تولید فایل‌های Word و PDF


جمع‌بندی

Stream یکی از مهم‌ترین مفاهیم در سی‌شارپ و دات‌نت است که پایه و اساس تمام عملیات ورودی و خروجی را تشکیل می‌دهد.
کلاس Stream امکان خواندن و نوشتن داده‌ها را از منابع مختلف فراهم می‌کند و انواع مختلفی مانند FileStream، MemoryStream، NetworkStream، BufferedStream، CryptoStream و GZipStream برای سناریوهای گوناگون در اختیار برنامه‌نویسان قرار می‌دهد.

درک صحیح Stream باعث می‌شود بتوانید فایل‌های بزرگ را با کارایی بالا مدیریت کنید، داده‌ها را از طریق شبکه منتقل نمایید، عملیات رمزنگاری و فشرده‌سازی انجام دهید و برنامه‌هایی سریع‌تر و بهینه‌تر توسعه دهید.
به همین دلیل یادگیری Stream یکی از مهارت‌های ضروری برای هر برنامه‌نویس سی‌شارپ محسوب می‌شود.

محصولات مرتبط

کاربران ما

شما هم نظرتون با ما دریاره “Stream در سی‌شارپ” اشتراک بزارید

برای ارسال نظر لطفا ورود یا ثبت نام کنید

منو