کلاس DirectoryInfo

از کلاس DirectoryInfo برای کار با پوشه‌ها استفاده می‌شود. امکانات این کلاس شبیه به کلاس Directory است. برای استفاده از متدها و خواص کلاس DirectoryInfo لازم است که از آن نمونه ایجاد کنید.

DirectoryInfo directory = new DirectoryInfo(@"C:Directory");

سازنده کلاس DirectoryInfo آرگومانی از نوع رشته که نشان دهنده مسیر پوشه است را، قبول می‌کند. این کلاس دارای متدهای متفاوتی برای ایجاد، حذف، انتقال و … پوشه‌ها می‌باشد. برخی از خواص مفید این کلاس در جدول زیر آمده است:

خاصیت توضیح
Attributes صفات یک پوشه را بر می‌گرداند.
CreationTime زمان و تاریخی که یک پوشه ایجاد شده است را بر می‌گرداند
Exists اگر پوشه‌ای در سیستم فایل موجود باشد مقدار true را بر می‌گرداند
LastAccessTime تاریخ و رمان آخرین دسترسی به پوشه را بر می‌گرداند.
LastWriteTime تاریخ و زمان آخرین دستکاری پوشه را نشان می‌دهد.
Name نام پوشه را بر می‌گرداند.
FullName مسیر کامل فایل یا پوشه را بر می‌گرداند.
Parent پوشه والد یک زیر پوشه را بر می‌گرداند.
Root ریشه یک مسیر را بر می‌گرداند.

خاصیت Parent نام پوشه والد یک شیء از DirectoryInfo را بر می‌گرداند. به عنوان مثال Directory پوشه والد C:DirectorySubdirectory می‌باشد. خاصیت Root ریشه پوشه DirectoryInfo را برمی گرداند. مثلاً :C ریشه C:/Directory می‌باشد. برخی از متدهای این کلاس در زیر ذکر شده‌اند :

متد توضیح
Create() یک پوشه ایجاد می‌کند.
CreateSubdirectory() یک یا چند زیر پوشه در یک مسیر مشخص ایجاد می‌کند.
Delete() یک پوشه را حذف می‌کند.
EnumerateDirectories() یک لیست از اشیاء DirectoryInfo را که زیر پوشه‌های شیء DirectoryInfo هستند بر می‌گرداند.
EnumerateFiles() یک لیست اشیاء FileInfo که فایل‌های واقع در شیء DirectoryInfo هستند را بر می‌گرداند.
GetDirectories() شبیه EnumerateDirectories است ولی نتیجه را به عنوان یک آرایه بر می‌گرداند.
GetFiles() شبیه EnumerateFiles است ولی نتیجه را به عنوان یک آرایه بر می‌گرداند.
MoveTo() یک پوشه را به پوشه دیگر انتقال می‌دهد.

ایجاد زیر پوشه

از متد ()CreateSubdirectory برای ایجاد زیر پوشه‌ها استفاده می‌شود. به مثال زیر توجه کنید :

DirectoryInfo directory = new DirectoryInfo(@"C:Directory");
directory.Create(); //Creates C:Directory
directory.CreateSubdirectory("Subdirectory"); //Creates C:DirectorySubdirectory

مسیری که شما به عنوان آرگومان به متد ()CreateSubdirectory ارسال می‌کنید، یک مسیر نسبی است. بدین معنی که لازم نیست مسیر کامل زیر پوشه را بنویسید.

شمارش فایل‌ها و پوشه

می‌توان از متدهای ()EnumerateDirectories() ،EnumerateFiles() ،GetDirectories یا ()GetFiles برای به دست آوردن لیستی از پوشه‌ها و فایل‌ها استفاده نمود. تفاوت بین ()EnumereateDirectories و ()EnumerateFiles در برگشت نتیجه به عنوان یک System.Collections.Generic.IEnumerable<T> است به طوریکه T یا DirectoryInfo است یا FileInfo. متدهای ()GetDirectories و ()GetFiles نتیجه را به عنوان یک آرایه ساده DirectoryInfo یا FileInfo برگشت می‌دهند. کد زیر لیست فایلهای موجود در یک پوشه را نشان می‌دهد:

DirectoryInfo directory = new DirectoryInfo(@"C:");
IEnumerable<FileInfo> files = directory.EnumerateFiles();

foreach (FileInfo file in files)
{
    Console.WriteLine(file.Name);
}

خروجی نمایش داده نمی‌شود چون نتیجه بستگی به فایل‌هایی دارد که در مسیر C:/directory وجود دارند. می‌توانید از یکی از سربارگذاری های چهار متد استفاده کنید که یک آرگومان به عنوان رشته قبول می‌کند. این رشته می‌تواند یک الگو و یا یک پسوند باشد. به عنوان مثال شما می‌توانید لیستی از همه فایل‌های با پسوند txt. را جستجو کنید :

IEnumerable<FileInfo> textFiles = directory.EnumerateFiles("*.txt");

کاراکتر * یک کاراکتر عمومی است که نشان دهنده نام فایل است. textFiles شامل لیستی از اشیاء FileInfo است که دارای پسوند txt. می‌باشند.