"

نحوه خواندن فایل در سی‌شارپ,بررسی وجود فایل قبل از خواندن در سی شارپ,خواندن فایل به صورت Asynchronous در سی شارپ

نحوه خواندن فایل در سی‌شارپ

خواندن فایل در سی‌شارپ فرایندی برای دریافت و پردازش اطلاعات ذخیره‌شده در فایل‌های متنی با استفاده از کلاس‌های System.IO است.

تیم تحریریه
3
0
05 مرداد 1405
لینک کوتاه

نحوه خواندن فایل در سی‌شارپ

خواندن فایل در سی‌شارپ یکی از مهارت‌های ضروری برای هر برنامه‌نویس دات‌نت است.
بسیاری از نرم‌افزارهای دسکتاپ، تحت وب و حتی سرویس‌های ویندوزی برای ذخیره و بازیابی اطلاعات از فایل‌ها استفاده می‌کنند.
فایل‌های متنی، فایل‌های CSV، فایل‌های JSON، XML و حتی فایل‌های باینری، همگی از طریق کلاس‌های موجود در فضای نام System.IO قابل مدیریت هستند.

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



نحوه خواندن فایل در سی‌شارپ

کلاس File در فضای نام System.IO

اصلی‌ترین کلاس برای کار با فایل‌ها در سی‌شارپ، کلاس File است که متدهای آماده‌ای برای خواندن و نوشتن فایل‌ها در اختیار برنامه‌نویسان قرار می‌دهد.

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

 

using System.IO;



خواندن کل فایل با ReadAllText

ساده‌ترین روش برای خواندن یک فایل متنی استفاده از متد ReadAllText است.

 

string text = File.ReadAllText(@"C:\Data\Test.txt");




Console.WriteLine(text);

 

در این روش کل محتوای فایل به صورت یک رشته (String) در حافظه قرار می‌گیرد.

 

مزایا

  • بسیار ساده

  • مناسب فایل‌های کوچک

  • سرعت بالا

معایب

  • برای فایل‌های حجیم مناسب نیست.

  • حافظه زیادی مصرف می‌کند.

  • خواندن فایل به صورت آرایه‌ای از خطوط

 

گاهی لازم است هر خط فایل به صورت جداگانه پردازش شود.

 

string[] lines = File.ReadAllLines(@"C:\Data\Test.txt");




foreach(string line in lines)

{

Console.WriteLine(line);

}

 

در این روش هر خط فایل داخل یک عنصر از آرایه ذخیره می‌شود.



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

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

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

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

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

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

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

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




استفاده از ReadLines

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

 

foreach(string line in File.ReadLines(@"C:\Data\Test.txt"))

{

Console.WriteLine(line);

}

 

مزیت مهم این روش این است که فایل به صورت تدریجی خوانده می‌شود و تمام محتوا همزمان وارد حافظه نمی‌شود.

 

تفاوت ReadAllLines و ReadLines در سی شارپ

ReadLines ReadAllLines 
خط‌به‌خط می‌خواند کل فایل را وارد حافظه می‌کند 
برای فایل‌های بزرگ مناسب است برای فایل‌های کوچک مناسب است 
مصرف حافظه کم مصرف حافظه زیاد 




تفاوت ReadAllLines و ReadLines در سی شارپ

استفاده از StreamReader

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

 

using(StreamReader reader = new StreamReader(@"C:\Data\Test.txt"))

{

string text = reader.ReadToEnd();




Console.WriteLine(text);

}

متد ReadToEnd کل فایل را می‌خواند.

 

خواندن خط به خط با StreamReader

using(StreamReader reader = new StreamReader(@"C:\Data\Test.txt"))

{

string line;




while((line = reader.ReadLine()) != null)

{

Console.WriteLine(line);

}

}

 

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

 

خواندن تعداد مشخصی کاراکتر

using(StreamReader reader = new StreamReader(@"C:\Data\Test.txt"))

{

char[] buffer = new char[100];




reader.Read(buffer,0,100);




Console.WriteLine(buffer);

}

 

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

 

بررسی وجود فایل قبل از خواندن در سی شارپ

همیشه قبل از خواندن فایل بهتر است وجود آن بررسی شود.

 

if(File.Exists(@"C:\Data\Test.txt"))

{

string text = File.ReadAllText(@"C:\Data\Test.txt");




Console.WriteLine(text);

}

else

{

Console.WriteLine("فایل پیدا نشد.");

}

مدیریت خطاها

یکی از مهم‌ترین نکات هنگام کار با فایل‌ها مدیریت Exceptionها است.

 

try

{

string text = File.ReadAllText(@"C:\Data\Test.txt");




Console.WriteLine(text);

}

catch(Exception ex)

{

Console.WriteLine(ex.Message);

}



استفاده از Encoding

اگر فایل فارسی باشد بهتر است Encoding مشخص شود.

 

using System.Text;




string text = File.ReadAllText(

@"C:\Data\Test.txt",

Encoding.UTF8);




Console.WriteLine(text);



خواندن فایل UTF8

using(StreamReader reader =

new StreamReader(@"C:\Data\Test.txt",

Encoding.UTF8))

{

Console.WriteLine(reader.ReadToEnd());

}



خواندن فایل CSV

فرض کنید فایل زیر وجود دارد:

 

Ali,25

Sara,31

Reza,29

 

خواندن فایل:

 

foreach(string line in File.ReadLines(@"C:\Data\Users.csv"))

{

string[] parts = line.Split(',');




Console.WriteLine(parts[0]);

Console.WriteLine(parts[1]);

}




خواندن فایل JSON

فرض کنید فایل JSON داریم.

 

{

"name":"Ali",

"Age":30

}

 

خواندن فایل:

 

string json =

File.ReadAllText(@"C:\Data\User.json");

 

سپس با Newtonsoft.Json یا System.Text.Json می‌توان آن را تبدیل به شیء کرد.

 

خواندن فایل XML

string xml =

File.ReadAllText(@"C:\Data\Data.xml");

 

یا

 

XmlDocument doc =

new XmlDocument();




doc.Load(@"C:\Data\Data.xml");

خواندن فایل باینری

byte[] bytes =

File.ReadAllBytes(@"C:\Data\Image.jpg");

 

این روش برای تصاویر، PDF، فایل‌های Word و فایل‌های اجرایی کاربرد دارد.

 

خواندن فایل با FileStream

using(FileStream stream =

new FileStream(

@"C:\Data\Test.txt",

FileMode.Open))

{

byte[] buffer =

new byte[stream.Length];




stream.Read(buffer,0,buffer.Length);




string text =

Encoding.UTF8.GetString(buffer);




Console.WriteLine(text);

}



استفاده از FileInfo

FileInfo file =

new FileInfo(@"C:\Data\Test.txt");




Console.WriteLine(file.Length);




Console.WriteLine(file.CreationTime);



خواندن فایل به صورت Asynchronous در سی شارپ

در برنامه‌های مدرن بهتر است عملیات فایل به صورت Async انجام شود.

 

string text =

await File.ReadAllTextAsync(

@"C:\Data\Test.txt");




Console.WriteLine(text);



خواندن خطوط به صورت Async

using(StreamReader reader =

new StreamReader(@"C:\Data\Test.txt"))

{

string text =

await reader.ReadToEndAsync();




Console.WriteLine(text);

}




خواندن فایل‌های بزرگ در سی‌شارپ

برای فایل‌هایی با حجم چند گیگابایت بهتر است:

 

  • از StreamReader استفاده شود.

  • فایل خط‌به‌خط خوانده شود.

  • از ReadLines استفاده گردد.

  • کل فایل وارد حافظه نشود.



خواندن فایل‌های بزرگ در سی‌شارپ

نکات امنیتی خواندن فایل در سی‌شارپ

هنگام خواندن فایل به موارد زیر توجه کنید:

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



مقایسه روش‌های خواندن فایل در سی شارپ


روش کاربرد
ReadAllText  خواندن کل فایل متنی
ReadAllLines  خواندن همه خطوط
ReadLines  خواندن تدریجی خطوط
StreamReader  خواندن حرفه‌ای فایل
FileStream  خواندن فایل‌های باینری و حجیم
ReadAllBytes  خواندن تصاویر و فایل‌های باینری
ReadAllTextAsync  خواندن غیرهمزمان فایل


 


بهترین روش برای پروژه‌های واقعی

در پروژه‌های کوچک و فایل‌های کم‌حجم، استفاده از File.ReadAllText یا File.ReadAllLines به دلیل سادگی و خوانایی کد گزینه مناسبی است.
اما در نرم‌افزارهای سازمانی، سیستم‌های پردازش داده یا برنامه‌هایی که با فایل‌های بزرگ سروکار دارند، استفاده از StreamReader یا File.ReadLines انتخاب بهتری است؛ زیرا مصرف حافظه را کاهش داده و عملکرد برنامه را بهبود می‌بخشد.

همچنین در برنامه‌های مدرن مبتنی بر ASP.NET Core، WPF یا WinForms، استفاده از متدهای Asynchronous مانند ReadAllTextAsync و ReadToEndAsync باعث می‌شود رابط کاربری یا درخواست‌های وب در حین خواندن فایل مسدود نشوند و تجربه کاربری بهتری فراهم شود.

 

جمع‌بندی

خواندن فایل در سی‌شارپ با استفاده از کلاس‌های موجود در فضای نام System.IO بسیار ساده و در عین حال قدرتمند است.
بسته به نوع فایل، حجم داده و نیاز پروژه، می‌توان از متدهایی مانند ReadAllText، ReadAllLines، ReadLines، StreamReader یا FileStream استفاده کرد.
انتخاب روش مناسب تأثیر مستقیمی بر سرعت اجرا، مصرف حافظه و پایداری برنامه دارد.
با رعایت اصولی مانند بررسی وجود فایل، مدیریت خطاها، استفاده از Encoding مناسب و بهره‌گیری از متدهای غیرهمزمان، می‌توانید برنامه‌هایی حرفه‌ای، سریع و قابل اعتماد برای مدیریت فایل‌ها در سی‌شارپ توسعه دهید.

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

کاربران ما

شما هم نظرتون با ما دریاره “نحوه خواندن فایل در سی‌شارپ” اشتراک بزارید

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

منو