کار با فایلها و دایرکتوریها در #C
کار با فایلها و دایرکتوریها در C#
در C# برای کار با فایلها و دایرکتوریها از فضای نام System.IO استفاده میشود. این فضا شامل کلاسهایی مانند File، FileInfo، Directory، DirectoryInfo، StreamReader و StreamWriter است که عملیات مختلفی مانند ایجاد، خواندن، نوشتن و حذف فایلها و پوشهها را فراهم میکند.
۱. کار با فایلها (File و FileInfo)
ایجاد فایل و نوشتن در آن
using System.IO;
class Program
{
static void Main()
{
string path = "test.txt";
// ایجاد و نوشتن در فایل
File.WriteAllText(path, "سلام! این یک فایل تستی است.");
Console.WriteLine("فایل ایجاد شد و اطلاعات نوشته شد.");
}
}
🔹 File.WriteAllText(path, text) محتوا را در فایل نوشته و اگر فایل وجود نداشته باشد، آن را ایجاد میکند.
خواندن محتوای یک فایل
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.IO;
class Program
{
static void Main()
{
string path = "test.txt";
// اضافه کردن متن به فایل
File.AppendAllText(path, "\nاین یک متن جدید است.");
Console.WriteLine("متن جدید به فایل اضافه شد.");
}
}
🔹 File.AppendAllText(path, text) محتوای جدید را به انتهای فایل اضافه میکند.
حذف فایل
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.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.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.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.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.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.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.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 برای مدیریت خطاها و جلوگیری از کرش کردن برنامه استفاده کنید.
