
آموزش کار با فایل ها و استریم Stream ها در سی شارپ
آموزش کار با فایل ها و استریم Stream ها در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی کار کردن با فایل ها و Stream ها در سی شارپ است که با نام اصلی Working with Files and Streams in C# از شرکت Pluralsight منتشر شده است.
Stream ها و کار کردن با فایل ها در سی شارپ
در عملیاتی که اغلب در سی شارپ با فایل ها انجام می شود، از Stream ها استفاده می شود. کلاس Stream در دات نت یک کلاس Abstract است که به نمایانگر یک دنباله از داده های بایت است. این دنباله از داده های بایت در کار کردن با فایل ها و دیگر دستگاه های ورودی و خروجی استفاده می شوند. کلاس هایی که از کلاس Stream ارث بری می کنند یک مکانیزم ساده و به دور از جزییات سیستم های عامل و ... در اختیار برنامه نویس قرار می دهد. یکی از کاربردهای مهم Stream ها، خواندن و نوشتن در فایل ها می باشد.

با استفاده از Stream ها عملیات انجام شده بر روی فایل ها به مراتب ساده تر می شود. با استفاده از Stream ها می توان داده های موجود در فایل های بزرگ را به راحتی خواند و در برنامه استفاده کرد. این داده های بزرگ به تکه های کوچکتری به نام chunk شکسته می شوند و سپس این chunk ها از درون برنامه خوانده می شوند. ضمناً توصیه می کنیم که از آموزش استریمینگ Streaming در دات نت و آموزش رایگان برنامه نویسی با زبان سی شارپ استفاده کنید.
مدیریت فایل و دایرکتوری در C#
کار با فایلها و دایرکتوریها یکی از نیازهای رایج در بسیاری از برنامههای C# است. برنامهها ممکن است برای ذخیره تنظیمات، خواندن اطلاعات ورودی، تولید گزارش یا پردازش دادههای کاربر به فایلهای موجود در سیستمعامل دسترسی داشته باشند. در .NET، کلاسها و API های مختلفی برای ایجاد، حذف، جابهجایی و بررسی فایلها و پوشهها وجود دارند. شناخت این امکانات به توسعهدهندگان کمک میکند عملیات مربوط به فایل سیستم را به شکل ساختاریافته انجام دهند و کدی بنویسند که مدیریت منابع و مسیرهای فایل را بهدرستی در نظر بگیرد.
مدیریت فایل تنها به خواندن و نوشتن محتوا محدود نمیشود و گاهی لازم است تغییرات ایجادشده در فایل سیستم نیز بررسی شوند. برای مثال، یک برنامه میتواند به تغییرات فایلها یا دایرکتوریها واکنش نشان دهد و در صورت ایجاد یا تغییر یک فایل، عملیات مشخصی را انجام دهد. آشنایی با روش مانیتور کردن فایل سیستم به شما کمک میکند چنین سناریوهایی را در برنامههای C# پیادهسازی کنید. در این آموزش، مدیریت فایلها و دایرکتوریها در کنار بررسی تغییرات فایل سیستم مطرح میشود تا با جنبههای مختلف کار با فایلها آشنا شوید.
خواندن و نوشتن فایل با Stream در C#
Stream در .NET انتزاعی برای کار با دنبالهای از دادهها است که امکان خواندن و نوشتن اطلاعات را از منابع مختلف فراهم میکند. هنگام کار با فایلها، Stream به برنامه اجازه میدهد دادهها را بهصورت جریانی پردازش کند، بدون اینکه در همه شرایط لازم باشد کل محتوا بهطور همزمان در حافظه قرار گیرد. این ویژگی در فایلهای بزرگ یا سناریوهایی که پردازش تدریجی دادهها اهمیت دارد، کاربردی است. آشنایی با Stream به توسعهدهندگان کمک میکند نحوه انتقال داده میان برنامه و منابع ورودی و خروجی را بهتر درک کنند.
در C# میتوان با استفاده از Stream تمام محتوای یک فایل یا تنها بخشی از آن را خواند و نوشت. انتخاب روش مناسب به حجم دادهها، نیاز برنامه و نحوه دسترسی به اطلاعات بستگی دارد. برای مثال، در برخی سناریوها پردازش بخش مشخصی از فایل میتواند از خواندن غیرضروری تمام محتوا جلوگیری کند. در این دوره، خواندن و نوشتن کامل فایلها در کنار عملیات جزئی با استفاده از Stream ها بررسی میشود. این مباحث به شما کمک میکنند روشهای مختلف دسترسی به دادههای فایل را بشناسید و متناسب با نیاز برنامه خود از آنها استفاده کنید.
خواندن و نوشتن فایلهای CSV در C#
فایلهای CSV یکی از قالبهای متداول برای ذخیره و تبادل دادههای جدولی هستند. در این قالب، اطلاعات معمولاً بهصورت ردیفهایی از مقادیر ذخیره میشوند که با جداکننده از یکدیگر تفکیک شدهاند. فایلهای CSV در انتقال داده میان برنامهها، خروجی گرفتن از سیستمهای مختلف و پردازش اطلاعات ساختاریافته کاربرد دارند. برای کار با این فایلها در C# لازم است علاوه بر خواندن و نوشتن محتوا، به نحوه نمایش مقادیر و قواعد قالببندی نیز توجه شود تا اطلاعات هنگام پردازش یا ذخیرهسازی دچار تغییر ناخواسته نشوند.
استفاده از Stream ها میتواند بخشی از فرایند خواندن و نوشتن فایلهای CSV باشد و امکان پردازش دادهها را به شکل متناسب با نیاز برنامه فراهم کند. برای نمونه، یک برنامه ممکن است دادههای موجود در فایل را بخواند، مقادیر موردنیاز را استخراج کند یا اطلاعات جدیدی را در قالب CSV ذخیره کند. درک این فرایندها برای توسعهدهندگانی که با دادههای جدولی سروکار دارند، مفید است. در این آموزش، کار با فایلهای CSV در کنار مباحث عمومی فایل و Stream بررسی میشود تا با یکی از سناریوهای کاربردی پردازش فایل در C# آشنا شوید.
تست خودکار کدهای دسترسی به فایل در C#
کدی که با فایل سیستم تعامل دارد، ممکن است به شرایط محیط اجرا وابسته باشد؛ برای مثال، وجود یا نبود یک فایل، دسترسیهای سیستمعامل و وضعیت مسیرهای ذخیرهسازی میتوانند بر نتیجه عملیات تأثیر بگذارند. به همین دلیل، تست کردن کدهای دسترسی به فایل اهمیت دارد. Automated Testing به توسعهدهندگان کمک میکند رفتار این کدها را در شرایط تعریفشده بررسی کنند و مشکلات احتمالی را در مراحل توسعه شناسایی کنند. طراحی تست مناسب همچنین امکان بررسی مجدد رفتار برنامه را پس از تغییرات کد فراهم میسازد.
در این دوره، نوشتن تست خودکار برای کدهای دسترسی به فایلها در کنار مباحث مدیریت فایل، مانیتور کردن تغییرات و کار با Stream ها مطرح میشود. این موضوع به شما کمک میکند هنگام طراحی کدهای مرتبط با فایل سیستم، قابلیت آزمایشپذیری آنها را نیز در نظر بگیرید. تستهای خودکار میتوانند برای بررسی رفتار خواندن و نوشتن دادهها و ارزیابی شرایط مختلف استفاده شوند. آشنایی با این رویکرد برای توسعهدهندگانی که با عملیات فایل در برنامههای C# سروکار دارند، به بهبود فرایند بررسی و نگهداری کد کمک میکند.
سرفصل مطالب آموزش ویدئویی کار با فایل ها و Stream ها در سی شارپ
فصل اول: مقدمه
- مقدمه
فصل دوم: مدیریت کردن فایل ها و دایرکتوری ها
- مقدمه
- ساختن یک Console Application
- چک کردن وجود یا عدم وجود یک فایل
- به دست آوردن دایرکتوری پدر یک مسیر
- چک کردن وجود یا عدم وجود یک دایرکتوری و ساختن دایرکتوری های جدید
- کپی کردن یک فایل
- کات کردن یک فایل
- به دست آوردن پسوند یک فایل از نام فایل
- حذف کردن یک دایرکتوری
- پیمایش کردن تمامی فایل های درون یک دایرکتوری
- جمع بندی
فصل سوم: مانیتور کردن فایل سیستم برای تغییرات
- مقدمه
- معرفی کردن کلاس FileSystemWatcher
- بررسی پروپرتی InternalBufferSize
- پیکربندی Notification Filter ها
- پروپرتی های دیگر
- ریفکتور کردن کد برای استفاده از کلاس FileSystemWatcher
- بررسی کردن Event های کلاس FileSystemWatcher
- پردازش خودکار فایل ها
- صرف نظر کردن از Event های تکراری کلاس FileSystemWatcher با استفاده از یک ConcurrentDictionary
- صرف نظر کردن از Event های تکراری کلاس FileSystemWatcher با استفاده از یک MemoryCache
- اضافه کردن قابلیت پردازش فایل های از قبل موجود
- نوشتن تست برای کلاس FileSystemWatcher
- جمع بندی
فصل چهارم: خواندن و نوشتن تمامی یک فایل
- مقدمه
- خواندن و نوشتن فایل های متنی
- خواندن و نوشتن فایل های متنی با استفاده از آرایه های رشته ای
- تنظیم کردن Text Encoding ها
- اضافه کردن محتوا به انتهای یک فایل متنی
- خواندن و نوشتن تمامی محتوای فایل های باینری
- موضوعات مهم
- جمع بندی
فصل پنجم: خواندن و نوشتن قسمتی از یک فایل با استفاده از Stream ها
- مقدمه
- مقدمه ای بر ماهیت Stream ها
- مزایای استفاده از Stream ها
- بررسی سلسه مراتب کلاس های Stream ها در دات نت
- استفاده از Stream ها برای خواندن و نوشتن فایل ها
- ساده کردن روند ساختن StreamReader و StreamWriter
- انتخاب بخشی از یک Stream برای پردازش
- استفاده از Stream ها برای خواندن و نوشتن داده های باینری
- استفاده از کلاس های BinaryReader و BinaryWriter
- تنظیم کردن Text Encoding ها
- استفاده از Stream ها برای اضافه کردن محتوا
- دسترسی تصادفی و یا Random به FileStream
- بررسی MemoryStream
- جمع بندی
فصل ششم: خواندن و نوشتن فایل های CSV
- مقدمه
- بررسی کتابخانه CsvHelper
- خواندن داده های CSV به صورت Dynamic
- صرف نظر کردن از خطوط خالی
- پیکربندی کردن یک جدا کننده و یا Delimiter سفارشی
- خواندن داده های CSV به درون Entity Class ها
- پیکربندی Header Validation و Missing Field Action ها
- پیکربندی نگاشت های کلاس های سفارشی
- ساختن Converter های سفارشی
- نوشتن به درون فایل های CSV
- جمع بندی
فصل هفتم: نوشتن Automated Test برای کدهای دسترسی به فایل ها
- مقدمه
- مشکلات نوشتن تست برای کدهای دسترسی به فایل ها
- بررسی کتابخانه System.IO.Abstractions
- ریفکتور کردن کد برای نوشتن تست ها
- اضافه کردن تست TextFileProcessor
- اضافه کردن تست BinaryFileProcessor
- اضافه کردن تست CSVFileProcessor
- نوشتن Approval Test ها برای Assert کردن خروجی فایل های Mock شده
- جمع بندی







