تبلیغات

قطعه کد خواندن فایل متنی در سی شارپ

جهت خواندن فایل متنی در سی شارپ، روش‌های مختلفی وجود دارد. همچنین خواندن فایل متنی به این معناست که خروجی آن فایل، داخل متغیری از نوع string قرار گیرد. این قرارگیری می‌تواند به‌صورت کامل و یا خط به خط داخل یک آرایه انجام شود! قطعه‌کدهای زیر از فضای نامی using System.IO برای رسیدن به این اهداف استفاده می‌کنند.

قطعه کد اول: File.ReadAllText

در این جا، متد استاتیک ReadAllText از کلاس File فراخوانی می‌شود؛ مسیر فایل و نوع انکودینگ خواندن آن را دریافت می‌کندکه از Encoding نیز برای مقداردهی آن استفاده می‌شود:

قطعه کد دوم: StreamReader.ReadToEnd

متد بالا در واقع ساده شده‌ی قطعه کدی مشابه زیر است:

هدف از using در این کد، جایگزینی برای متد Dispose کلاس FileStream است! بدان معنا که using در اینجا مطمئن می‌شود که این متد فراخوانی شود تا پس از باز شدن فایل و اتمام کار، فایل بسته شود! همچنین هنگام نمونه‌سازی از این کلاس، در پارامتر سازنده‌ی آن مشخص شده است که برای فایل چه اتفاقی رخ دهد که در اینجا حالت فایل Open یعنی باز شدن و دسترسی آن Read یعنی فقط برای خواندن در نظر گرفته شده است.

قطعه کد سوم: File.ReadAllLines

دو قطعه‌کد بالا، کل محتوای فایل را داخل یک متغیر رشته‌ای می‌خوانند! اما اگر هدف خواندن محتوای فایل متنی داخل یک آرایه باشد، می‌توان علاوه بر جدا کردن خروجی قطعه‌کدهای بالا با علامت خط جدید، بصورت خلاصه از قطعه‌کد زیر استفاده کرد:

این متد نیز ورودی‌هایی همانند ReadAllText دریافت می‌کند.

طبیعتا این کد را به‌صورت زیر نیز می‌توان نوشت:

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

قطعه کد چهارم: streamReader.ReadLine

متد بالا شکل خلاصه‌ی قطعه‌کدی مشابه زیر است:

در اینجا آرایه‌ای رشته‌ای تعریف شده و یک لیست نیز تعریف شده است. از FileStream همانند قبل استفاده شده اما بجای فراخوانی متد ReadToEnd، از متد ReadLine استفاده شده و شرط آن، مخالف null بودن است؛ زیرا null یعنی خطوط به اتمام رسیده‌ است. بنابراین حلقه‌ای با بررسی شرط ReadLine، خط جدید را خوانده و درصورت ایینکه برابر null نباشد، آن را به لیست اضافه می‌کند و درصورت null بودن نیز حلقه به اتمام می‌رسد. در نهایت نیز این لیست به کمک متد ToArray به یک آرایه تبدیل می‌شود و در lines قرار می‌گیرد.

همچنین بجای اینکه line را به list اضافه کنیم، می‌توانیم پردازش‌های دلخواه خود را برروی آن انجام دهیم؛ همانند روش قبل. اما تفاوت این است که در اینجا کل متن به یک‌باره در رم ریخته نمی‌شود و محتوا به صورت استریم، خط به خط خوانده می‌شود.

تبلیغات
کانال تلگرام فول کده
تبلیغات

درباره نویسنده

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک‌گذاری اطلاعات در هر زمینه‌ای / برنامه‌نویس فول استک

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

نظرات ثبت شده بدون دیدگاه