خواندن و نوشتن فایل های متنی در زبان سی شارپ
در زبان برنامه نویسی سی شارپ کلاس StreamReader و StreamWriter به منظور خواندن و نوشتن داده ها در فایل های متنی در زبان سی شارپ مورد استفاده قرار می گرد. این کلاس ها از کلاس پایه Stream که به صورت abstract می باشد، مشتق شده اند که امکان خواندن و نوشتن بایت ها در یک جریان را فراهم می کند.
کلاس StreamReader
کلاس StreamReader نیز از کلاس TextReader مشتق شده است. در زیر متدهای رایج کلاس StreamReader را مشاهده می کنید:
ردیف | توضیحات |
1 | public override void Close() شیء ایجاد شده از نوع StreamReader را می ببند و حافظه اشغال شده توسط Reader را آزاد می کند. |
2 | public override int Peek() اولین کاراکتر بعدی در دسترس را باز میگرداند. |
3 | public override int Read() کاراکتر بعدی را از جریان ورودی می خواند و موقعیت کاراکتر را یک واحد افزایش می دهد. |
مثال
مثال زیر نحوه خواندن محتوای فایل یک فایل را نشان می دهد. فایل مورد استفاده شامل محتوای زیر است:
1 2 3 4 5 | Down the way where the nights are gay And the sun shines daily on the mountain top I took a trip on a sailing ship And when I reached Jamaica I made a stop |
کد برنامه:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System; using System.IO; namespace FileApplication { class Program { static void Main(string[] args) { try { // Create an instance of StreamReader to read from a file. // The using statement also closes the StreamReader. using (StreamReader sr = new StreamReader("c:/jamaica.txt")) { string line; // Read and display lines from the file until // the end of the file is reached. while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { // Let the user know what went wrong. Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } Console.ReadKey(); } } } |
برای مشاهده نتیجه مثال بالا خودتان آن را امتحان کنید.
کلاس StreamWriter
کلاس StreamWriter نیز از کلاس TextWriter مشتق شده است. در زیر متدهای رایج کلاس StreamWriter را مشاهده می کنید:
ردیف | توضیحات |
1 | public override void Close() شیء StreamWriter فعلی را می بندد. |
2 | public override void Flush() تمام بافر را برای writer جاری پاک می کند و باعث می شود همه داده های بافر در جریان مشخص شده نوشته شوند. |
3 | public virtual void Write(bool value) یک مقدار بولی را به صورت رشته در جریان می نویسد. |
4 | public override void Write(char value) یک کاراکتر را در جریان می نویسد. |
5 | public virtual void Write(decimal value) متن متناظر با داده دسیمال را در جریان می نویسد. |
6 | public virtual void Write(double value) متن متناظر با داده اعشاری را در جریان می نویسد. |
7 | public virtual void Write(int value) متن متناظر با داده integer را در جریان می نویسد. |
8 | public override void Write(string value) یک رشته را در جریان خروجی می نویسد. |
9 | public virtual void WriteLine() یک رشته را در جریان خروجی می نویسد و سپس به خط جدید می رود. |
برای مشاهده لیست کامل متدهای این کلاس به مستندات سی شارپ مایکروسافت مراجعه کنید.
مثال
مثال زیر نحوه نوشتن داده های متنی درون یک فایل با استفاده از کلاس StreamWriter را نشان می دهد:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | using System; using System.IO; namespace FileApplication { class Program { static void Main(string[] args) { string[] names = new string[] {"Zara Ali", "Nuha Ali"}; using (StreamWriter sw = new StreamWriter("names.txt")) { foreach (string s in names) { sw.WriteLine(s); } } // Read and show each line from the file. string line = ""; using (StreamReader sr = new StreamReader("names.txt")) { while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } Console.ReadKey(); } } } |
زمانی که کد بالا کامپایل و اجرا شود، نتیجه زیر را تولید خواهد کرد:
1 2 | Zara Ali Nuha Ali |
هیچ نظری ثبت نشده است