کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش خواندن و نوشتن فایل ها در C#


وقتی با C# برنامه‌نویسی می‌کنی، دیر یا زود به جایی می‌رسی که باید اطلاعاتی رو داخل فایل ذخیره کنی یا اطلاعاتی که قبلاً ذخیره شده رو دوباره بخونی. خواندن و نوشتن فایل‌ها یکی از کارهای کاربردی در برنامه‌نویسیه و C# ابزارهای ساده‌ای در اختیارت می‌ذاره تا بتونی این کارها رو انجام بدی.

توی این آموزش، قدم‌به‌قدم با روش خواندن و نوشتن فایل‌های متنی در C# آشنا می‌شیم و با چند مثال ساده می‌بینیم چطور می‌تونیم محتویات یک فایل رو بخونیم، متن جدیدی به اون اضافه کنیم و در ادامه با استفاده از StreamWriter، کار با فایل رو کمی بهتر مدیریت کنیم.

آموزش خواندن و نوشتن فایل ها در زبان C# :

توی این بخش می‌خوایم نحوه خواندن (Reading) و نوشتن (Writing) در فایل‌ها با استفاده از زبان C# رو یاد بگیریم. خوشبختانه C# امکاناتی در اختیارمون قرار می‌ده که انجام این کارها رو خیلی ساده می‌کنه. کلاس File از namespace مربوط به System.IO تقریباً همه چیزهایی رو که برای خواندن و نوشتن فایل‌ها در C# نیاز داریم، در اختیارمون می‌ذاره.
در اولین مثال این درس، یک ویرایشگر متنی ساده می‌سازیم. این ویرایشگر اون‌قدر ساده است که فقط می‌تونیم با استفاده از اون، محتویات یک فایل رو بخونیم و بعد هر زمان که خواستیم، یک خط جدید به اون اضافه کنیم. با این حال، همین مثال ساده بخش زیادی از قابلیت‌های کار با کلاس File رو نشون می‌ده. کد این مثال به شکل زیره:

using System;
using System.IO;
namespace FileHandlingArticleApp
{
class Program
{
static void Main(string[] args)
{
if(File.Exists("test.txt"))
{
    string content = File.ReadAllText("test.txt");
    Console.WriteLine("Current content of file:");
    Console.WriteLine(content);
}
Console.WriteLine("Please enter new content for the file:");
string newContent = Console.ReadLine();
File.WriteAllText("test.txt", newContent);
}
}
}

اگه به کد مثال بالا دقت کرده باشی، کلاس File رو در سه قسمت مختلف استفاده کردیم:

  • اول از File استفاده کردیم تا بررسی کنیم فایل متنی موردنظر وجود داره یا نه؛ File.Exists.
  • از متد ReadAllText() برای خوندن کل محتویات فایل استفاده کردیم.
  • در نهایت هم از متد WriteAllText() برای اضافه کردن محتوای جدید به فایل استفاده کردیم.

باز هم اگه دقت کرده باشی، برای فراخوانی فایل متنی از یک آدرس مطلق استفاده نکردیم و فقط اسم فایل رو نوشتیم. این کار باعث می‌شه فایل متنی در همون پوشه‌ای قرار بگیره که فایل اجرایی برنامه در اون قرار داره و برای این مرحله از آموزش، همین روش مناسبه.
از طرف دیگه، مثالی که داریم یک نمونه ساده و مناسب برای یادگیریه: اول بررسی کردیم که فایل متنی وجود داره یا نه، بعد کل محتویات اون رو داخل Console نمایش دادیم. در مرحله دوم از کاربر خواستیم متن موردنظرش رو وارد کنه و بعد محتوای جدید رو داخل فایل نوشتیم. البته این کار باعث بازنویسی محتوای قبلی فایل می‌شه و در واقع فایل رو آپدیت می‌کنه که برای شروع یادگیری مناسبه. اگه می‌خوای مفاهیم پایه آموزش C# رو اصولی‌تر یاد بگیری، می‌تونی مسیر یادگیریت رو با یک دوره کامل‌تر ادامه بدی.

می‌تونیم به جای متد WriteAllText() از متد AppendAllText() هم استفاده کنیم. با این کار، محتوای جدید به انتهای فایل موجود اضافه می‌شه و محتوای قبلی فایل از بین نمی‌ره.

File.AppendAllText("test.txt", newContent);

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

 Console.WriteLine("Please enter new content for the file - type exit and press enter to finish editing:");
string newContent = Console.ReadLine();
while(newContent != "exit")
{
File.AppendAllText("test.txt", newContent + Environment.NewLine);
newContent = Console.ReadLine();
}             

همون‌طور که می‌بینی، به کاربر گفتیم که اگه بخواد اضافه کردن متن به فایل رو تموم کنه، عبارت “exit” رو وارد کنه. تا وقتی این کلمه وارد نشده، کاربر می‌تونه هر تعداد خط متن جدید که می‌خواد به فایل اضافه کنه و برنامه هم با درخواست متن جدید، همچنان ورودی دریافت می‌کنه. همچنین یک کد جدید به نام Environment.NewLine به انتهای دستور newline اضافه کردیم تا رفتار محیط برنامه کمی شبیه ادیتورهای متنی بشه.
از طرف دیگه، به جای اینکه هر بار که کدهای برنامه اجرا می‌شن، محتوا رو به فایل اضافه کنیم، می‌تونیم از راه‌حل زیر استفاده کنیم که روش بهتریه:

Console.WriteLine("Please enter new content for the file - type exit and press enter to finish editing:");
using(StreamWriter sw = new StreamWriter("test.txt"))
{
string newContent = Console.ReadLine();
while(newContent != "exit")
{
sw.Write(newContent + Environment.NewLine);
newContent = Console.ReadLine();
}
}
            

استفاده از قابلیت Streams کمی فراتر از آموزش‌های این بخشه، اما به طور خلاصه می‌شه گفت با استفاده از اون می‌تونیم فایل متنی موردنظر رو یک بار باز کنیم، هر مقدار محتوایی که داریم به اون اضافه کنیم و در پایان کار، فایل رو یک‌باره ببندیم.
از طرف دیگه، در مثال بالا از قابلیت دستور Using() در C# استفاده کردیم. دستور Using() این اطمینان رو به ما می‌ده که به محض اینکه برنامه از Scope مربوط به این بخش از کد خارج بشه، که در اینجا انتهای براکت‌های {} هست، ارجاع به فایل به صورت خودکار بسته بشه. اگه از using() استفاده نکنیم، باید در انتهای نمونه شیء StreamWriter، برای بستن فایل متنی، متد Close() رو فراخوانی کنیم.

اگه می‌خوای کار با فایل‌ها و سایر مفاهیم C# رو از مباحث پایه تا موضوعات کاربردی‌تر به شکل منظم یاد بگیری، می‌تونی یادگیریت رو با دوره آموزش C# ادامه بدی و قدم بعدی مسیر یادگیری برنامه‌نویسی با C# رو برداری.


1405/06/11 37035 4302
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...