یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی یه تابستون متفاوت با یه تصمیم هوشمندانه! دوره هوش مصنوعی
🎯 ثبت نام
بستن تبلیغات
تسلط کامل بر سی‌شارپ با یک دوره پروژه‌محور

یادگیری سی شارپ از مفاهیم پایه تا پروژه محور: شی‌گرایی، کار با SQL و LINQ، ORMها (Entity Framework)، ساخت پروژه مدیریت رستوران با گزارشات حرفه‌ای و امکانات کامل!

مشاهده بیشتر
تسلط جامع بر MVC Core برای توسعه وب حرفه‌ای

یادگیری MVC Core از مبانی تا پیشرفته: شی‌گرایی، Routing، Entity Framework، امنیت، تست یونیت، Razor، Ajax، و پروژه‌های کاربردی! یک دوره کامل برای تسلط بر توسعه وب با ASP.NET Core. به صورت حضوری و آنلاین!

مشاهده بیشتر

آموزش استخراج اطلاعات فایل و پوشه ها در زبان C#

آموزش استخراج اطلاعات فایل و پوشه ها در زبان C# :

کلاس های File Class و Directory Class که در بخش های قبل استفاده کردیم، برای کار مستقیم با فایل ها و دستکاری پوشه ها، بسیار مناسب هستند. اما گاهی اوقات نیاز داریم تا اطلاعاتی را درباره یک فایل یا پوشه بدست آوریم، به جای این که لزوما آن را تغییر دهیم. در این گونه موارد نیز System.IO namespace به کمک آمده و کلاس های FileInfo Class و DirectoryInfo Class را در اختیارمان قرار می دهد. در این درس قصد داریم تا با ارائه مثال هایی، نحوه کار با این کلاس ها را آموزش دهیم.
در کد مثال زیر، نحوه استفاده از کلاس FileInfo Class را نشان می دهد :

1
2
3
4
5
6
7
8
static void Main(string[] args)
{
    FileInfo fi = new FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
    if(fi != null)
        Console.WriteLine(String.Format("Information about file: {0}, {1} bytes, last modified on {2} - Full path: {3}", fi.Name, fi.Length, fi.LastWriteTime, fi.FullName));
    Console.ReadKey();
}
            <button></button>

در کد مثال فوق، ابتدا یک نمونه جدید از کلاس FileInfo Class را ایجاد کرده ایم. این نمونه یک پارامتر که حاوی آدرس فایلی که می خواهیم راجع به آن، اطلاعات کسب کنیم را دریافت می کند. می توان نام هر فایل دلخواهی را در این پارامتر قرار داده اما ما برای جالب تر کردن مثال، آدرس فایل اجرایی EXE ای که در حال کامپایل برنامه کنونی ماست را ارسال کردیم. از آنجایی که ما به فایل اجرایی یک پروژه از طریق Console Application دسترسی نداریم (این فایل بخشی از WinForms assembly است)، از یک Reflection برای دسترسی به آدرس assembly جاری استفاده کرده ایم. انجام این کار در چهارچوب مطالب آموزشی این درس نیست، اما برای زمان حال، آن را در نظر داشته باشید تا در بخش جداگانه ای به آموزش آن بپردازیم. تا زمانی که یک نسخه از کلاس FileInfo داشته باشیم، می توانیم اطلاعات مختلفی را راجع به فایل ارسال شده به آن، دریافت کنیم. پروژه کد مثال قبل را اجرا نموده و خواهدید دید که خیلی ساده و مرتب، کلاس FileInfo اطلاعات بسیار کاملی را راجع به فایل در اختیارمان قرار می دهد، حتی shortcut هایی که به متدهای کلاس File ارتباط دارند.
با استفاده از کلاس FileInfo، به اطلاعات یک فایل تنها دسترسی داشتیم. اما با استفاده از کلاس DirectoryInfo می توانیم اطلاعات مربوط به تمامی فایل ها و پوشه های موجود در یک پوشه را بدست آوریم، که امکان بسیار مناسبی است. مثال زیر، نحوه انجام کار را نشان می دهد :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    DirectoryInfo di = new DirectoryInfo(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));
if(di != null)
{
    FileInfo[] subFiles = di.GetFiles();
    if(subFiles.Length > 0)
    {
        Console.WriteLine("Files:");
        foreach(FileInfo subFile in subFiles)
        {
            Console.WriteLine("   " + subFile.Name + " (" + subFile.Length + " bytes)");
        }
    }
    Console.ReadKey();
}         
            <button></button>

در کد مثال فوق، به جای یک نسخه از کلاس FileInfo یک نسخه از کلاس DirectoryInfo را ایجاد کرده ایم. سپس از روشی مشابه مثال اول، برای دریافت مسیر فایل مورد نظر استفاده کرده و با کمک متد GetDirectoryName() از کلاس Path Class، آدرس پوشه را و نام آن را از مسیر استخراج کرده ایم. ما از متد GetFiles() استفاده کرده ایم که هر عضو آرایه، نماینده یک فایل در پوشه است. سپس با کمک یک حلقه loop، درون آرایه حرکت کرده و نام فایل و سایز هر کدام را در خروجی چاپ کرده ایم.
همچنین می توانید لیست کامل پوشه های موجود در پوشه جاری را با استفاده از کد زیر به دست آورید :

1
2
3
4
5
6
7
8
9
10
DirectoryInfo[] subDirs = di.GetDirectories();
if(subDirs.Length > 0)
{
    Console.WriteLine("Directories:");
    foreach(DirectoryInfo subDir in subDirs)
    {
        Console.WriteLine("   " + subDir.Name);
    }
}
                  <button></button>

در برخی موارد، ممکن است شما فقط فایل ها یا پوشه هایی با نام یا پسوند خاص را بخواهید مشاهده کنید، خوشبختانه کلاس های FileInfo و DirectoryInfo پشتیبانی خوبی از این مسئله، انجام می دهند.
به کمک کد مثال زیر، می توانیم به کلیه فایل های دارای پسوند .exe و پوشه جاری دسترسی داشته باشیم :

1
2
FileInfo[] subFiles = di.GetFiles("*.exe");
                  <button></button>

همچنین کد زیر، لیست کامل نام پوشه هایی که در نام آن ها عبارت “test” وجود دارد را نشان می دهد :

1
2
DirectoryInfo[] subDirs = di.GetDirectories("*test*");
                              <button></button>

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

1
2
FileInfo[] subFiles = di.GetFiles("*.exe", SearchOption.AllDirectories);
                            <button></button>

اگر بخواهیم فقط اولین پوشه (در بالاترین رده) را جستجو کنیم، کد به صورت زیر تغییر می کند :

1
2
3
FileInfo[] subFiles = di.GetFiles("*.exe", SearchOption.TopDirectoryOnly);
 
                            <button></button>
1395/08/13 14905 2091
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

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