با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن ، با دوره کامل آموزش #C در خدمت شما دوستان هستیم . در قسمت قبل با کلاس Stream و کاربرد آن در رابطه با ورودی/خروجی در #C آشنا شدید. در این قسمت نحوه کار کردن با فایل ها و دایرکتوری ها در #C یا پوشه ها در زبان سی شارپ آشنا خواهید شد.
#C کلاس های زیر را برای کار با فایل ها فراهم کرده است. آنها می توانند برای دسترسی به دایرکتوری ها، دسترسی به فایل ها، باز کردن فایل ها برای خواندن یا نوشتن، ایجاد یک فایل جدید یا انتقال فایل های موجود از یک مکان به مکان دیگر و … استفاده شوند.
توضیحات | نام |
File یک کلاس استاتیک است که ویژگی های مختلفی مانند کپی، ایجاد، انتقال، حذف، باز کردن برای خواندن یا نوشتن، رمزگذاری یا رمزگشایی را فراهم می کند. بررسی می کند که آیا فایل وجود دارد، متن یا خطوط را به محتوای فایل اضافه کند، بازگرداند آخرین زمان دسترسی، و … . | File |
کلاس FileInfo عملکرد مشابهی مانند کلاس File دارد . توسط آن کنترل بیشتری بر نحوه انجام عملیات خواندن / نوشتن روی یک فایل ، با نوشتن کد به صورت دستی برای خواندن یا نوشتن بایت از یک فایل دارید. | FileInfo |
Directory یک کلاس استاتیک است که قابلیت ایجاد، انتقال، حذف و دسترسی به زیر شاخه ها را فراهم می کند. | Directory |
DirectoryInfo متد هایی را برای ایجاد، انتقال، حذف و دسترسی به زیر شاخه ها فراهم می کند. | DirectoryInfo |
Path یک کلاس استاتیک است که قابلیت هایی مانند بازیابی پسوند یک فایل، تغییر پسوند یک فایل، بازیابی مسیر فیزیکی مطلق و دیگر ویژگی های مسیر را فراهم می کند. | Path |
#C شامل کلاس استاتیک File برای انجام عملیات I / O در سیستم فایل فیزیکی است. کلاس File شامل ابزارهای مختلفی برای ارتباط با فایل فیزیکی در هر نوع باینری، متن و … می باشد.
برای انجام برخی عملیات سریع در فایل فیزیکی از این کلاس استفاده کنید. استفاده از کلاس File برای چندین عملیات در چندین فایل توصیه نمی شود. برای اینکار از کلاس غیر استاتیک FileInfo استفاده کنید.
توضیحات | متد |
خطوطی را به یک فایل متنی اضافه می کند و سپس فایل را می بندد. اگر فایل مشخص شده وجود نداشته باشد، این متد یک فایل ایجاد می کند، خطوط مشخص شده را به فایل می نویسد و سپس فایل را می بندد. | AppendAllLines |
فایل را باز می کند، رشته مشخص شده را به فایل اضافه می کند و سپس فایل را می بندد. اگر فایل وجود نداشته باشد، این متد یک فایل ایجاد می کند، رشته مشخص شده را در فایل می نویسد، سپس فایل را می بندد. | AppendAllText |
StreamWriter را ایجاد می کند که متن کدگذاری شده UTF-8 را به یک فایل موجود اضافه می کند یا اگر فایل مشخص شده وجود نداشته باشد آن را می سازد. | AppendText |
یک فایل موجود را به یک فایل جدید کپی می کند. رونویسی یک فایل از همان نام مجاز نیست. | Copy |
یک فایل را در مسیر مشخص شده ایجاد یا رونویسی می کند. | Create |
برای نوشتن متن کدگذاری شده UTF-8 فایل را ایجاد یا باز می کند. | CreateText |
رمزگشایی یک فایل که توسط حساب جاری با استفاده از متد Encrypt . | Decrypt |
حذف فایل | Delete |
رمزگذاری یک فایل به طوری که فقط حساب کاربری استفاده کننده فایل می تواند آن را رمزگشایی کند. | Encrypt |
تعیین اینکه آیا فایل مشخص شده وجود دارد یا خیر | Exists |
با استفاده از شی FileSecurity نوع دسترسی (ACL) های یک فایل مشخص شده را برمی گرداند. | GetAccessControl |
یک فایل مشخص شده را به یک مکان جدید انتقال می دهد، و میتوان نام فایل را هم بهنگام جابجایی تغییر داد. | Move |
FileStream را در مسیر مشخص شده با دسترسی read/write باز می کند. | Open |
یک فایل باینری را باز می کند، محتویات فایل را به صورت یک آرایه بایت می خواند، و سپس فایل را می بندد. | ReadAllBytes |
فایل متنی را باز می کند، تمام خطوط فایل را می خواند، و سپس فایل را می بندد. | ReadAllLines |
فایل متنی را باز می کند، تمام خطوط فایل را می خواند، و سپس فایل را بسته می کند. | ReadAllText |
محتویات یک فایل مشخص شده را با محتویات یک فایل دیگر جایگزین کرده، فایل اصلی را حذف میکند و از فایل جایگزین پشتیبان تهیه می کند. | Replace |
یک فایل جدید ایجاد می کند، آرایه مشخص شده بایت را در فایل می نویسد و سپس فایل را می بندد. اگر فایل وجود داشته باشد، آن را رونویسی می کند. | WriteAllBytes |
یک فایل جدید ایجاد می کند، مجموعه ای از رشته ها را در فایل می نویسد و سپس فایل را می بندد | WriteAllLines |
یک فایل جدید ایجاد می کند، رشته مشخص شده را در فایل می نویسد و سپس فایل را می بندد. اگر فایل وجود داشته باشد، آن را رونویسی می کند. | WriteAllText |
از متد AppendAllLines برای اضافه کردن چندین خط متن به فایل مشخص شده به صورت زیر استفاده می شود.
1 2 3 4 5 6 | string dummyLines = "This is first line." + Environment.NewLine + "This is second line." + Environment.NewLine + "This is third line."; //Opens DummyFile.txt and append lines. If file is not exists then create and open. File.AppendAllLines(@"C:\DummyFile.txt", dummyLines.Split(Environment.NewLine.ToCharArray()).ToList<string>()); |
از متد File.AppendAllText برای اضافه کردن رشته به یک فایل در یک تک خط به صورت زیر استفاده می شود.
1 | File.AppendAllText(@"C:\ DummyFile.txt", "This is File testing"); |
از متد File.WriteAllText برای نوشتن متن در فایل استفاده کنید. لطفا توجه داشته باشید که متن را اضافه نخواهد کرد اما متون موجود را بازنویسی کند.
1 | File.WriteAllText(@"C:\DummyFile.txt", "This is dummy text"); |
مثال زیر نحوه انجام عملیات های مختلف را با استفاده از کلاس File نشان می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //Check whether file is exists or not at particular location bool isFileExists = File.Exists(@"C:\ DummyFile.txt"); // returns false //Copy DummyFile.txt as new file DummyFileNew.txt File.Copy(@"C:\DummyFile.txt", @"D:\NewDummyFile.txt"); //Get when the file was accessed last time DateTime lastAccessTime = File.GetLastAccessTime(@"C:\DummyFile.txt"); //get when the file was written last time DateTime lastWriteTime = File.GetLastWriteTime(@"C:\DummyFile.txt"); // Move file to new location File.Move(@"C:\DummyFile.txt", @"D:\DummyFile.txt"); //Open file and returns FileStream for reading bytes from the file FileStream fs = File.Open(@"D:\DummyFile.txt", FileMode.OpenOrCreate); //Open file and return StreamReader for reading string from the file StreamReader sr = File.OpenText(@"D:\DummyFile.txt"); //Delete file File.Delete(@"C:\DummyFile.txt"); |
بنابراین، با استفاده از کلاس File کار کردن با فایلهای فیزیکی آسان است. با این حال، اگر شما می خواهید انعطاف پذیری بیشتر در کار کردن با آنها داشته باشید باید از کلاس FileInfo استفاده کنید.
در این جلسه با کلاس File ، متدها و کاربرد هرکدام از آنها آشنا شدید .
در قسمت بعد قصد داریم شما را با کلاس FileInfo آشنا کنیم.
hossein
بسیار عالی مرتب و منظم و بدون حاشیه و پرداختن به اصل مطلب. ممنون