نحوه خواندن فایل در سیشارپ
خواندن فایل در سیشارپ فرایندی برای دریافت و پردازش اطلاعات ذخیرهشده در فایلهای متنی با استفاده از کلاسهای System.IO است.
نحوه خواندن فایل در سیشارپ
خواندن فایل در سیشارپ یکی از مهارتهای ضروری برای هر برنامهنویس داتنت است.
بسیاری از نرمافزارهای دسکتاپ، تحت وب و حتی سرویسهای ویندوزی برای ذخیره و بازیابی اطلاعات از فایلها استفاده میکنند.
فایلهای متنی، فایلهای 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 |
| خطبهخط میخواند | کل فایل را وارد حافظه میکند |
| برای فایلهای بزرگ مناسب است | برای فایلهای کوچک مناسب است |
| مصرف حافظه کم | مصرف حافظه زیاد |

استفاده از 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 مناسب و بهرهگیری از متدهای غیرهمزمان، میتوانید برنامههایی حرفهای، سریع و قابل اعتماد برای مدیریت فایلها در سیشارپ توسعه دهید.

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