کار با فایل به صورت مقدماتی توسط سی شارپ

در این مقاله به توضیح توابع مفید و کاربردی زبان قدرتمند سی شارپ جهت کار با فایل خواهیم پرداخت.

مقدمه

کلاس ها و توابع مورد نیاز جهت کار با فایل در بخش System.IO قرار گرفته است. این بدین معنی است که تقریبا همه نیاز شما جهت کار با فایل توسط زبان سی شارپ در این بخش دیده شده است. در این آموزش قصد داریم به صورت کاربردی و مقدماتی نمونه هایی از کار با فایل توسط زبان سی شارپ را به شما ارائه بدهیم؛ پس با راوبیت همراه باشید و اگر این آموزش برای شما مفید بود، به دیگران نیز معرفی نمایید و در نشر علم سهیم باشید.

کار با فایل در سی شارپ

ساخت پروژه کنسولی

در این بخش یک پروژه کنسولی باید ایجاد کنید. برای اینکار طبق تصویر زیر، پروژه Console App را انتخاب کنید.

گام اول ساخت پروژه کنسولی

دقت کنید که ما از نسخه Core استفاده میکنیم اما مفاهیم گفته شده در دات نت فریم ورک نیز قابل استفاده هستند. دات نت کور نسخه Cross-Platform می باشد و بر روی سیستم عامل های دیگر مثل لینوکس یا مک قابل اجرا می باشد. به همین دلیل اگر شما یک مک بوک دارید نیز می توانید با ساخت این پروژه از این آموزش بهره ببرید.

حال بر روی دکمه Next کلیک کنید و مطابق تصویر زیر یک نام مانند CSharpFileReadWrite در کادر اسم پروژه وارد کنید و سپس مجدد دکمه Next را بزنید.

گام دوم ساخت پروژه کنسولی

در گام آخر مطابق تصویر زیر نسخه دات نت یا دات نت فریم ورک را انتخاب کنید. دقت کنید انتخاب 6 یا 7 یا 8 با هم فرقی ندارد. در نهایت بر روی دکمه Create کلیک کنید تا پروژه ایجاد شود.

گام سوم ساخت پروژه کنسولی

نوشتن و خواندن یک فایل

اکنون که یک پروژه کنسولی ایجاد شد، فایل Program.cs را باز کنیدو خطوط زیر را در آن وارد کنید. فقط دقت نمایید که در سیستم خود درایو D موجود باشد، اگر بر روی مک یا لینوکس هستید، دقت کنید که مسیر وجود داشته باشد و مسیر را به یک مسیر درست تغییر بدهید.

string path = @"D:\RawbitFileFromCsharp.txt";
Console.WriteLine($"Writing a file: {path}");
System.IO.File.WriteAllText(path, "File created by Csharp app");
Console.WriteLine($"Adding one more line: {path}");
System.IO.File.AppendAllText(path, "\r\nThis is a the second line");
string contents=System.IO.File.ReadAllText(path);
Console.WriteLine($"Reading file contents:\r\n-----\r\n{contents}\r\n-----");
Console.WriteLine("Press any key to exit!");
Console.ReadKey();

در برنامه فوق مسیر را بر روی کنسول چاپ کرده ایم. دقت کنید علامت دلار باعث شده است تا مقدار path در یک رشته قرار بگیرد. با این نحوه نگارش دیگر نیازی نیست تا از عملگر جمع استفاده کنید یا از تابع string.Format استفاده کنید.

سپس با استفاده از دستور WriteAllText از کلاس File یک فایل را ایجاد میکنیم و مقداری مثل File created by Csharp app را در آن می نویسیم. نکته مهم اینست که این دستور به صورت خودکار فایل باز شده را می بندد و آن را آزاد میکند. سپس با دستور AppendAllText یک خط دیگر به فایل اضافه میکنیم. کاراکتر های اسلش ان و اسلش آر در ویندوز به معنای ابتدای خط جدید هستند. در سیستم عامل ها یونیکس مثل مک یا لینوکس، کاراکتر اسلش ان کافیست. سپس با دستور ReadAllText محتویات فایل را میخوانیم و در یک string بنام contents نگه میداریم و در خط بعد آن را در کنسول چاپ میکنیم.

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

خروجی برنامه فوق را می توانید در تصویر فوق نگاه کنید.

بررسی وجود یک فایل و حذف آن

در بسیاری از مواقع نیاز است وجود یا عدم وجود یک فایل را بررسی کنید. خوشبختانه اینکار با زبان سی شارپ بسیار راحت است. قطعه کد زیر را نگاه کنید:

string path = @"D:\RawbitFileFromCsharp.txt";
if (System.IO.File.Exists(path))
{
    System.IO.File.Delete(path);
    Console.WriteLine("File deleted successfully!");
}
else
{
    Console.WriteLine("File doesn't exists.");
}
Console.WriteLine("Press any key to exit!");
Console.ReadKey();

با توجه به قطعه کد فوق، تابع Exists وجود یک مسیر را بررسی می کند. خروجی این تابع bool می باشد. اگر true بود یعنی فایل وجود دارد و اگر false بود یعنی فایل وجود ندارد. با توجه به برنامه فوق، در صورت وجود با تابع Delete آن را حذف میکنیم و پیامی به کاربر نشان میدهیم؛ همچنین در صورت عدم وجود پیامی را به کاربر نشان میدهیم. خروجی برنامه فوق در تصویر زیر آمده است:

حذف یک فایل

نحوه ساخت یک پوشه

برای ساخت یک دایرکتوری یا یک پوشه باید به جای File از کلاس Directory استفاده کنید. برای مثال برنامه زیر در شاخه D یک پوشه بنام Rawbit ایجاد میکند:

string directoryPath=@"D:\Rawbit";
System.IO.Directory.CreateDirectory(directoryPath);
Console.WriteLine($"New directory created at {directoryPath}");
Console.WriteLine("Press any key to exit!");
Console.ReadKey();

کپی کردن یک فایل

کپی کردن یک فایل از یک مسیر به مسیر دیگر در سی شارپ توسط دستور Copy انجام میشود، برنامه زیر را مشاهده کنید:

string sourceFile = @"D:\RawbitFileFromCsharp.txt";
string destinationFile= @"D:\Rawbit\NewData.txt";
System.IO.File.WriteAllText(sourceFile, "File created by Csharp app");
System.IO.File.Copy(sourceFile, destinationFile);
Console.WriteLine($"File copied from {sourceFile} to {destinationFile} successfully!");
Console.WriteLine("Press any key to exit!");
Console.ReadKey();

برنامه فایل موجود در مسیر sourceFile را در مسیر destinationFile با یک نام جدید کپی می کند. دقت کنید برای اینکه این برنامه مشکل نخورد ابتدا فایل را ایجاد کرده ایم و سپس آن را کپی کرده ایم. بدیهی است که اگر فایل وجود دارد نیازی به ساخت آن نداریم و مستقیما میتوانیم تابع Copy را اجرا کنیم. خروجی برنامه فوق در تصویر زیر آمده است:

کپی کردن فایل

دریافت لیست فایل های یک پوشه

یک پوشه دلخواه را در نظر بگیرید، فکر کنید که میخواهیم لیست فایل های موجود در آن را مشاهده کنیم. مثلا در تصویر زیر یک پوشه شامل چندین فایل را مشاهده میکنید:

فایل های یک پوشه

برای دریافت فایل های درون این پوشه باید از تابع GetFiles استفاده کنیم؛ قطعه کد زیر را نگاه کنید:

string directoryPath = @"D:\Rawbit";
var files=System.IO.Directory.GetFiles(directoryPath);
Console.WriteLine($"Files inside of {directoryPath} directory:");
foreach (var file in files)
{
    Console.WriteLine(file);
}
Console.WriteLine("Press any key to exit!");
Console.ReadKey();

در برنامه فوق ابتدا لیست فایل ها را با تابع GetFiles دریافت میکنیم و در یک آرایه نگه میداریم سپس با یک حلقه foreach همه را نمایش میدهیم. خروجی برنامه بدین صورت خواهد بود:

کد مربوط به دریافت فایل های یک پوشه

جمع بندی

در این آموزش به صورت مقدماتی کار با فایل را خدمت شما بیان کردیم. ماژول System.IO برای اینکار طراحی و برنامه نویسی شده است و همه نیازهای مربوط به کار با فایل در این فضا دیده شده است. چنانچه سوال یا نقطه نظری دارید، با راوبیت در میان بگذارید.