کار با فایل ها در سی شارپ

در این بخش نحوه کار با فایل ها و دایرکتوری ها، FileInfo، متدها و property های آن در سی شارپ آموزش داده می شود.

کار با فایل ها در سی شارپ

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

سی شارپ کلاس های زیر را برای کار با سیستم فایل ارائه می کند. از آنها می توان برای دسترسی به دایرکتوری ها (directories)، دسترسی به فایل ها، باز کردن فایل ها برای خواندن یا نوشتن، ایجاد یک فایل جدید یا انتقال فایل های موجود از یک مکان به مکان دیگر و غیره استفاده کرد.

1 - File

فایل یک کلاس static است که قابلیت های مختلفی مانند کپی، ایجاد، انتقال، حذف، باز کردن برای خواندن یا نوشتن ، رمزگذاری (encrypt) یا رمزگشایی (decrypt)، بررسی وجود فایل، الحاق خطوط یا متن به محتوای فایل، دریافت آخرین زمان دسترسی و غیره را ارائه می کند.

2 - FileInfo

کلاس FileInfo عملکردی مشابه کلاس استاتیک File را ارائه می دهد. با نوشتن کد به صورت دستی برای خواندن یا نوشتن بایت ها از یک فایل، کنترل بیشتری بر نحوه انجام عملیات خواندن/نوشتن روی یک فایل دارید.

3 - Directory

Directory یک کلاس static است که عملکردی برای ایجاد، جابجایی، حذف و دسترسی به زیر شاخه ها (subdirectories) فراهم می کند.

4 - DirectoryInfo

DirectoryInfo متد های نمونه ای را برای ایجاد، جابجایی، حذف و دسترسی به subdirectories ارائه می دهد.

5 - Path

Path یک کلاس static است که قابلیت هایی مانند بازیابی پسوند یک فایل، تغییر پسوند یک فایل، بازیابی مسیر فیزیکی دقیق و سایر عملیات مرتبط با مسیر را ارائه می دهد.

فایل (File)

زبان برنامه نویسی سی شارپ شامل کلاس استاتیک File برای انجام عملیات I/O بر روی سیستم فایل فیزیکی است. کلاس استاتیک File شامل متد های کاربردی مختلف برای تعامل با فایل فیزیکی از هر نوع است، به عنوان مثال. باینری، متنی و غیره

از این کلاس File از نوع static برای انجام عملیات سریع روی فایل فیزیکی استفاده کنید. به دلیل تأثیر بر عملکرد و کارایی، استفاده از کلاس File برای انجام چندین عملیات روی چندین فایل به طور همزمان توصیه نمی شود. در این سناریو از کلاس FileInfo استفاده کنید.

متد های Static File Class

1 – AppendAllLines

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

2 – AppendAllText

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

3 – AppendText

یک StreamWriter ایجاد می کند که متن کدگذاری شده UTF-8 را به یک فایل موجود یا در صورت عدم وجود فایل مشخص شده به یک فایل جدید اضافه می کند.

4 – Copy

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

5 – Create

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

6 – CreateText

فایلی را برای نوشتن متن کدگذاری شده UTF-8 ایجاد یا باز می کند.

7 – Decrypt

فایلی را که توسط اکاونت جاری رمزگذاری شده است با استفاده از متد Encrypt رمزگشایی می کند.

8 – Delete

فایل مشخص شده را حذف می کند.

9 – Encrypt

یک فایل را رمزگذاری می کند تا فقط اکاونت مورد استفاده برای رمزگذاری فایل بتواند آن را رمزگشایی کند.

10 – Exists

تعیین می کند که آیا فایل مشخص شده وجود دارد یا خیر.

11 - GetAccessControl

یک شی FileSecurity دریافت می کند که ورودی های لیست کنترل دسترسی (ACL) را برای یک فایل مشخص کپسوله می کند.

12 – Move

یک فایل مشخص شده را به مکان جدید منتقل می کند و گزینه ای را برای تعیین نام فایل جدید ارائه می دهد.

13 – Open

یک FileStream را در مسیر مشخص شده با دسترسی خواندن/نوشتن باز می کند.

14 – ReadAllBytes

یک فایل باینری را باز می کند، محتویات فایل را در یک آرایه بایتی می خواند و سپس فایل را می بندد.

15 – ReadAllLines

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

16 – ReadAllText

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

17 – Replace

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

18 – WriteAllBytes

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

19 – WriteAllLines

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

20 - WriteAllText

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

اضافه کردن خطوط متن (Append Text Lines)

از متد ()AppendAllLines برای اضافه کردن چندین خط متن به فایل مشخص شده مانند زیر استفاده کنید.

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

اضافه کردن رشته (Append String)

از متد ()File.AppendAllText برای اضافه کردن رشته به فایل در یک خط کد مانند زیر استفاده کنید.

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

رونویسی متن (Overwrite Text)

از متد ()File.WriteAllText برای نوشتن متون در فایل استفاده کنید. لطفاً توجه داشته باشید که این متد به متن اضافه نمی کند بلکه متون موجود را بازنویسی می کند.

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

مثال زیر نحوه انجام عملیات مختلف با استفاده از کلاس File استاتیک را نشان می دهد.

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

بنابراین، کار با فایل فیزیکی با استفاده از کلاس File استاتیک آسان است. با این حال، اگر می خواهید انعطاف پذیری بیشتری داشته باشید، از کلاس FileInfo استفاده کنید. به همین ترتیب، از کلاس Static Directory برای کار با دایرکتوری های فیزیکی استفاده کنید.

با دیدن MSDN تمام متدهای کلاس Static File را می توانید یاد بگیرید.

نکاتی که باید به خاطر بسپارید:

1 - فایل یک کلاس static برای خواندن/نوشتن از فایل فیزیکی با کدنویسی کمتر است.

2 - کلاس Static File قابلیت هایی مانند ایجاد، خواندن/نوشتن، کپی، انتقال، حذف و موارد دیگر را برای فایل های فیزیکی فراهم می کند.

3 - کلاس Static Directory قابلیت هایی مانند ایجاد، کپی، انتقال، حذف و غیره را برای دایرکتوری های فیزیکی با کدنویسی کمتر ارائه می دهد.

4 - کلاس FileInfo و DirectoryInfo عملکردی مشابه کلاس File و Directory استاتیک ارائه می دهد.

FileInfo در سی شارپ

در اینجا، نحوه استفاده از کلاس FileInfo را برای انجام عملیات خواندن/نوشتن روی فایل های فیزیکی یاد خواهید گرفت.

کلاس FileInfo عملکردی مشابه کلاس File استاتیک را ارائه می دهد، اما با نوشتن کد به صورت دستی برای خواندن یا نوشتن بایت ها از یک فایل، کنترل بیشتری روی عملیات خواندن/نوشتن روی فایل ها دارید.

Property های FileInfo

1 – Directory

نمونه ای از دایرکتوری والد (parent directory) را دریافت می کند.

2 – DirectoryName

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

3 – Exists

مقداری را دریافت می کند که نشان می دهد فایل وجود دارد یا خیر.

4 – Extension

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

5 – FullName

مسیر کامل دایرکتوری یا فایل را دریافت می کند.

6 – IsReadOnly

مقداری را دریافت یا ست می کند که تعیین می کند آیا فایل فعلی فقط خواندنی است یا خیر.

7 – LastAccessTime

زمان آخرین دسترسی به فایل یا directory فعلی را دریافت یا تنظیم می کند.

8 – LastWriteTime

زمانی را می گیرد یا تنظیم می کند که فایل یا directory فعلی آخرین بار در آن نوشته شده است.

9 - Length

اندازه فایل فعلی را بر حسب بایت دریافت می کند.

10 – Name

نام فایل را دریافت می کند.

متدهای FileInfo

1 – AppendText

یک StreamWriter ایجاد می کند که متنی را به فایل نشان داده شده با این نمونه از FileInfo اضافه می کند.

2 – CopyTo

یک فایل موجود را در یک فایل جدید کپی می کند و بازنویسی یک فایل موجود را ممنوع می کند.

3 – Create

یک فایل ایجاد می کند.

4 – CreateText

یک StreamWriter ایجاد می کند که یک فایل متنی جدید می نویسد.

5 – Decrypt

فایلی را که توسط اکاونت جاری رمزگذاری شده است با استفاده از روش Encrypt رمزگشایی می کند.

6 – Delete

فایل مشخص شده را حذف می کند.

7 – Encrypt

یک فایل را رمزگذاری می کند تا فقط اکاونت مورد استفاده برای رمزگذاری فایل بتواند آن را رمزگشایی کند.

8 – GetAccessControl

یک شی FileSecurity دریافت می کند که ورودی های لیست کنترل دسترسی (ACL) را برای یک فایل مشخص کپسوله می کند.

9 – MoveTo

یک فایل مشخص شده را به مکان جدید منتقل می کند و گزینه ای را برای تعیین نام فایل جدید ارائه می دهد.

10 - Open

a را در FileMode مشخص شده باز می کند.

11 – OpenRead

یک FileStream فقط خواندنی ایجاد می کند.

12 – OpenText

یک StreamReader با رمزگذاری UTF8 ایجاد می کند که از یک فایل متنی موجود می خواند.

13 – OpenWrite

یک FileStream فقط نوشتنی ایجاد می کند.

14 – Replace

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

15 – ToString

مسیری را به صورت رشته (string) برمی گرداند.

مثال زیر نحوه خواندن بایت ها از یک فایل را به صورت دستی و سپس تبدیل آنها به رشته با استفاده از رمزگذاری UTF8 نشان می دهد:

FileInfo در سی شارپ

همانطور که در کد بالا مشاهده کردید، باید کدهای زیادی برای خواندن/نوشتن یک رشته از FileSream بنویسید. همان عملیات خواندن/نوشتن را می توان به راحتی با استفاده از StreamReader و StreamWriter انجام داد.

مثال زیر نشان می دهد که StreamReader چگونه خواندن رشته ها را از یک فایل آسان می کند:

FileInfo در سی شارپ

توجه داشته باشید که ()fi.Open دارای سه پارامتر است: اولین پارامتر FileMode برای ایجاد و باز کردن یک فایل در صورت عدم وجود آن است. پارامتر دوم، FileAccess، برای نشان دادن یک عملیات Read است. و سومین پارامتر این است که در زمانی که فایل باز است، فایل را برای خواندن با سایر کاربران به اشتراک بگذارید.

مثال زیر نشان می دهد که چگونه StreamWriter نوشتن رشته ها را در یک فایل آسان می کند:

FileInfo در سی شارپ

عملیات خواندن و نوشتن روی یک شی FileStream به طور همزمان امکان پذیر نیست. اگر در حال خواندن از یک فایل هستید، یک شی FileStream جداگانه برای نوشتن در همان فایل ایجاد کنید، همانطور که در زیر نشان داده شده است:

FileInfo در سی شارپ

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

کار با فایل ها در سی شارپ متد های Static File Class  متدهای FileInfo Property های FileInfo FileInfo در سی شارپ Append Text Lines Append String Overwrite Text آموزش سی شارپ

مقالات این دسته بندی