فصل بیست و یکم کار با فایل هادر #C

<!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:"Times New Roman";} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt;} @page Section1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0; mso-gutter-direction:rtl;} div.Section1 {page:Section1;} -->

فصل بیست و یکم

C# درکار با فایل ها      

آنچه که در این فصل یاد خواهید گرفت:

کاوش ساختار فهرست، پیدا کردن فای لها و پوش ههای موجود و بررسی خصوصیات آنها

انتقال، کپی و حذف فای لها و پوش هها

خواندن و نوشتن متن در فایل ها

کنترل دسترسی به فایل ها

مایکروسافت مدل های شی زیادی برای پوشاندن این حوزه فراهم کرده اس ت . در این فصل نحو ه ی کاربرد کلا س های پایه

برای ان ج ام کارهای شرح شده در لیست قبلی را یاد م ی گیرید. کلاس های مرتبط با عملیات سیستم فایل تقریبا در NET.

هستند. System.IO فضای نامی

-1-21 مدیریت سیستم فایل

کلاس هایی که برای جستجوی سیستم فایل و انجام عملیاتی همچون انتقال، کپی کردن و حذف کردن فای ل ها هستند، در

1 نشان داده می شوند. فضای نامی هر کلاس در داخل [ ] در کنار نام کلاس نشان داده م یشود. - شکل 21

1- شکل 21

لیست زیر کار این کلا سها را شرح می دهد

mohsen_mahyar@yahoo.com - C# برنامهنویسی

364

است که از دور قابل کنترل هستند و مرت ب کردن 1 NET. کلاس پایه ی کلاس هایی از : System.MarshalByRefObject

داده های مابین دامنه های کاربردی را مجاز می دارد.

کلاس پایه که هر شی سیستم فایل را نشان می دهد. : FileSystemInfo

این کلا سها یک فایل را روی سیستم فایل نشان می دهند. :FileInfo و File

این کلا سها یک پوشه روی سیستم فایل را نشان می دهند. :DirectoryInfo,Directry

این کلاس اعضای ایستایی دارد که م یتوانند برای دستکاری اسامی مسیرها بکار روند. :Path

این کلاس مت دها و خصوصیاتی فراهم م یکند که اطلاعاتی درباره یک درایو منتخب فراهم م یکند :DriveInfo

NET. -1 کلاس های مربوط به پوشه ها و فایل ها در -1-21

در لیست قبلی دو کلاس برای نشان دادن یک پوشه و دو کلاس برای یک فایل استفاده م ی شدند. متناسب با تعداد دفعات

نیاز به دسترسی یک فایل یا پوشه، یکی از این دو نوع کلاس را بکار م یبرند.

فقط متدهای ایستا را در بر دارند و هرگز نمون ه ای از آن ایجاد نم ی شود. هر زمانی که یک مت  د عضو :File و Directory

این کلاس ها را فراخوانی م ی کنید، این کلا س ها را با تهی ه ی مسیر شی مناسب سیستم فایل به کار بری د . زمانیکه بخواهید فقط

یک عمل روی یک پوشه یا یک فایل انجام دهید، کاربرد این کلا س ها موثرتر است، چون آن سربار مربوط به ایجاد نمونه از

یک کلاس را صرف هجویی می کند.

را به همراه برخی از خصوصیات و File و Directory تقریبا همه متدهای عمومی :FileInfo, DirectoryIfo

پیاده سازی می کنند. اما آنها حالت شی را نشان م ی دهند و اعضای این کلاس ایستا نیستن د . قبل از public سازنده های

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

یک شی انجام دهید این کلا س ها موثر هستن د . و چون آنها اطلاعات تصدیق را در هنگام ایجاد شی سیستم فایل می خوانند،

نیازی نیست مجدداَ این اطلاعات خوانده شده و بررسی گردن د . در مقایسه با کلا س های بدون ح الت، همه جزئیات باید قبل از

فراخوانی متدها کنترل گردد.

کار م ی کنید، اما برخی از متدهای فراخوانی شده با DirectoryInfo و FileInfo در این بخش اکثراَ با کلاس

پیاده سازی می شوند( اگرچه این متدها پارامتر اضافی نیاز دارند). مثال : File و Directory کلاس های

FileInfo myFile = new FileInfo(@"C:\Program Files\My Program\ReadMe.txt");

myFile.CopyTo(@"D:\Copies\ReadMe.txt");

کد زیر نیز همان تاثیر را دارد:

File.Copy(@"C:\Program Files\My Program\ReadMe.txt", @"D:\Copies\ReadMe.txt");

ایجاد کند و آن را برای انجام FileInfo تکه کد اول زمان بیشتری برای اجرا م ی گیرد. چون نیاز دارد یک نمونه از شی

اعمال بعدی روی همان فایل آماده می سازد. اما تکه کد دوم نیازی نیست نمون های از آن شی ایجاد شود.

DirectoryInfo یا FileInfo می توانید با ردکردن یک رشته شامل سیستم فایل مورد نظر به سازنده، نمون ه ای از کلا س

ایجاد کنید. کد مربوط به ایجاد پوشه به صورت زیر است:

DirectoryInfo myFolder = new DirectoryInfo(@"C:\Program Files");

اگر مسیر مورد نظر وجود نداشته باشد، یک استثنای زمان اجرا تولید نخواهد شد، مگر اینکه بخواهید یکی از متدهای این

می توان بود یا نبود یک پوشه و فایل را فهمید. Exists شی را فراخوانی کنید. با استفاده از خصوصیت

FileInfo test = new FileInfo(@"C:\Windows");

1 Marshaling

فصل بیست و یکم کار با فای لها

365

Console.WriteLine(test.Exists.ToString());

را اجرا کنید یک ()FileInfo.Open فایل نیست و اگر بخواهید متد c:\windows است، چون false خروجی کد قبلی

استثناء رخ می دهد.

بعد از اینکه تعیین کردید شی سیستم فایل موجود است، م ی توانید اطلاعاتی درباره آن با استفاده از خصوصیات جدول زیر

بیابید.

نام خصوصیت توصیف

زمان ایجاد فایل یا پوشه CreateTime

مسیر کامل پوشه ی فایل (FileInfo فقط در ) DirectoryName

فهرست پدر یک زیر فهرست مشخص (DirectoryInfo فقط در ) Parent

آیا فایل یا پوشه مورد نظر وجود دارد Exists

پسوند فایل را بر م ی گرداند، برای پوش ه ها رشته Extension

خالی بر می گردد.

نام مسیر کامل فایل یا پوشه FullName

زمان آخرین دسترسی به فایل یا پوشه LastAccessTime

زمان آخرین تغییر فایل یا پوشه LastWriteTime

نام فایل یا پوشه Name

بخش ریشه مسیر (DirectoryInfo فقط در ) Root

اندازه فایل بر حسب بایت (FileInfo فقط در ) Length

/ 0 نظر / 49 بازدید