الگوریتم اول

لطفا صبر کنید...

کار با فایل‌ها و دایرکتوری‌ها در #C

کار با فایل‌ها و دایرکتوری‌ها در C#

در C# برای کار با فایل‌ها و دایرکتوری‌ها از فضای نام System.IO استفاده می‌شود. این فضا شامل کلاس‌هایی مانند File، FileInfo، Directory، DirectoryInfo، StreamReader و StreamWriter است که عملیات مختلفی مانند ایجاد، خواندن، نوشتن و حذف فایل‌ها و پوشه‌ها را فراهم می‌کند.

۱. کار با فایل‌ها (File و FileInfo)

ایجاد فایل و نوشتن در آن

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path = "test.txt";

        // ایجاد و نوشتن در فایل
        File.WriteAllText(path, "سلام! این یک فایل تستی است.");

        Console.WriteLine("فایل ایجاد شد و اطلاعات نوشته شد.");
    }
}

🔹 File.WriteAllText(path, text) محتوا را در فایل نوشته و اگر فایل وجود نداشته باشد، آن را ایجاد می‌کند.

خواندن محتوای یک فایل

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path = "test.txt";

        if (File.Exists(path))
        {
            string content = File.ReadAllText(path);
            Console.WriteLine("محتوای فایل: " + content);
        }
        else
        {
            Console.WriteLine("فایل یافت نشد.");
        }
    }
}

🔹 File.ReadAllText(path) محتوای فایل را خوانده و در یک رشته ذخیره می‌کند.

اضافه کردن متن به فایل (Append)

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path = "test.txt";

        // اضافه کردن متن به فایل
        File.AppendAllText(path, "\nاین یک متن جدید است.");

        Console.WriteLine("متن جدید به فایل اضافه شد.");
    }
}

🔹 File.AppendAllText(path, text) محتوای جدید را به انتهای فایل اضافه می‌کند.

حذف فایل

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path = "test.txt";

        if (File.Exists(path))
        {
            File.Delete(path);
            Console.WriteLine("فایل حذف شد.");
        }
        else
        {
            Console.WriteLine("فایل وجود ندارد.");
        }
    }
}

🔹 File.Delete(path) فایل مورد نظر را حذف می‌کند.

۲. کار با دایرکتوری‌ها (Directory و DirectoryInfo)

ایجاد یک دایرکتوری

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string dirPath = "MyFolder";

        if (!Directory.Exists(dirPath))
        {
            Directory.CreateDirectory(dirPath);
            Console.WriteLine("پوشه ایجاد شد.");
        }
        else
        {
            Console.WriteLine("پوشه از قبل وجود دارد.");
        }
    }
}

🔹 Directory.CreateDirectory(path) اگر پوشه وجود نداشته باشد، آن را ایجاد می‌کند.

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

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string dirPath = "."; // مسیر فعلی

        // لیست کردن فایل‌ها
        string[] files = Directory.GetFiles(dirPath);
        Console.WriteLine("فایل‌ها:");
        foreach (string file in files)
        {
            Console.WriteLine(file);
        }

        // لیست کردن دایرکتوری‌ها
        string[] directories = Directory.GetDirectories(dirPath);
        Console.WriteLine("\nپوشه‌ها:");
        foreach (string dir in directories)
        {
            Console.WriteLine(dir);
        }
    }
}

🔹 Directory.GetFiles(path) لیستی از فایل‌های موجود در مسیر مشخص‌شده را برمی‌گرداند.
🔹 Directory.GetDirectories(path) لیستی از پوشه‌های موجود را برمی‌گرداند.

حذف دایرکتوری و محتوای آن

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string dirPath = "MyFolder";

        if (Directory.Exists(dirPath))
        {
            Directory.Delete(dirPath, true);
            Console.WriteLine("پوشه و محتوای آن حذف شد.");
        }
        else
        {
            Console.WriteLine("پوشه وجود ندارد.");
        }
    }
}

🔹 Directory.Delete(path, true) دایرکتوری و تمامی فایل‌ها و پوشه‌های داخل آن را حذف می‌کند.

۳. استفاده از StreamReader و StreamWriter برای خواندن و نوشتن فایل‌ها

نوشتن در فایل با StreamWriter

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path = "test.txt";

        using (StreamWriter writer = new StreamWriter(path))
        {
            writer.WriteLine("این یک فایل متنی است.");
            writer.WriteLine("این خط دوم است.");
        }

        Console.WriteLine("متن با موفقیت نوشته شد.");
    }
}

🔹 StreamWriter برای نوشتن داده در فایل استفاده می‌شود.
🔹 using باعث می‌شود که فایل به‌طور خودکار بعد از نوشتن بسته شود.

خواندن از فایل با StreamReader

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path = "test.txt";

        using (StreamReader reader = new StreamReader(path))
        {
            string line;
            while ((line = reader.ReadLine()) != null)
            {
                Console.WriteLine(line);
            }
        }
    }
}

🔹 ()StreamReader.ReadLine هر بار یک خط از فایل را خوانده و برمی‌گرداند.

۴. کار با اطلاعات فایل (FileInfo)

FileInfo اطلاعات و متادیتای فایل‌ها را مدیریت می‌کند.

دریافت اطلاعات یک فایل

using System;
using System.IO;

class Program
{
    static void Main()
    {
        FileInfo fileInfo = new FileInfo("test.txt");

        if (fileInfo.Exists)
        {
            Console.WriteLine($"نام فایل: {fileInfo.Name}");
            Console.WriteLine($"اندازه فایل: {fileInfo.Length} بایت");
            Console.WriteLine($"تاریخ ایجاد: {fileInfo.CreationTime}");
            Console.WriteLine($"آخرین تغییر: {fileInfo.LastWriteTime}");
        }
        else
        {
            Console.WriteLine("فایل وجود ندارد.");
        }
    }
}

🔹 fileInfo.Length اندازه فایل را نشان می‌دهد.
🔹 fileInfo.CreationTime تاریخ ایجاد فایل را نمایش می‌دهد.
🔹 fileInfo.LastWriteTime آخرین زمان تغییر فایل را نشان می‌دهد.

۵. مدیریت استثناها در کار با فایل‌ها

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

مدیریت خطاها با try-catch

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string path = "test.txt";

        try
        {
            string content = File.ReadAllText(path);
            Console.WriteLine("محتوای فایل:");
            Console.WriteLine(content);
        }
        catch (FileNotFoundException)
        {
            Console.WriteLine("خطا: فایل یافت نشد.");
        }
        catch (UnauthorizedAccessException)
        {
            Console.WriteLine("خطا: دسترسی به فایل مجاز نیست.");
        }
        catch (Exception ex)
        {
            Console.WriteLine("یک خطای غیرمنتظره رخ داد: " + ex.Message);
        }
    }
}

🔹 جمع‌بندی

  • از File و FileInfo برای عملیات ساده روی فایل‌ها استفاده کنید.
  • از Directory و DirectoryInfo برای کار با پوشه‌ها استفاده کنید.
  • از StreamReader و StreamWriter برای خواندن و نوشتن فایل‌های بزرگ استفاده کنید.
  • از try-catch برای مدیریت خطاها و جلوگیری از کرش کردن برنامه استفاده کنید.