خواندن از یک فایل متنی

عمل خواندن از یک فایل متنی بسیار شبیه به نوشتن در آن است. ابتدا باید یک FileStream که به فایل مورد نظر اشاره دارد ایجاد کنید. ولی به جای ارسال آن به کلاس StreamWriter باید آن را به کلاس StreamReader ارسال کنیم. برنامه زیر عمل خواندن از فایل را انجام می دهد.برنامه از فایل متنی که در درس قبلی ایجاد کرده ایم اطلاعات را می خواند.

   1: using System;
   2: using System.IO;
   3: using System.Text;
   4: using System.Collections.Generic;
   5: 
   6: namespace ReadingFromFile
   7: {
   8:     class Person
   9:     {
  10:         public string FirstName { get; set; }
  11:         public string LastName { get; set; }
  12:         public int Age { get; set; }
  13:     }
  14: 
  15:     class Program
  16:     {
  17:         static void Main()
  18:         {
  19:             List<Person> persons = new List<Person>();
  20: 
  21:             try
  22:             {
  23:                 FileStream fs =
  24:                    new FileStream("sample.txt", FileMode.Open, FileAccess.Read);
  25:                 StreamReader reader = new StreamReader(fs);
  26: 
  27:                 while (!reader.EndOfStream)
  28:                 {
  29:                     string line = reader.ReadLine();
  30:                     string[] fields = line.Split('#');
  31:                     Person newPerson = new Person();
  32:                     newPerson.FirstName = fields[0];
  33:                     newPerson.LastName = fields[1];
  34:                     newPerson.Age = Convert.ToInt32(fields[2]);
  35:                     persons.Add(newPerson);
  36:                 }
  37:             }
  38:             catch (IOException ex)
  39:             {
  40:                 Console.WriteLine(ex.Message);
  41:             }
  42: 
  43:             //Show each person's details
  44:             foreach (Person p in persons)
  45:             {
  46:                 Console.WriteLine("Name: {0} {1}nAge: {2}",
  47:                     p.FirstName, p.LastName, p.Age);
  48:             }
  49:         }
  50:     }
  51: }
Name: John Smith
Age: 21
Name: Mike Roberts	
Age: 31
Name: Garry Mathews
Age: 27

یک کلاس به نام Person (در خطوط 13-8) ایجاد کرده ایم.این کلاس اطلاعات مختلف هر شخص را که از فایل می خوانیم در خود نگهداری می کند. همچنین لیستی از اشخاص (در خط 19) ایجاد تا اطلاعات همه ی آنها را در یک مکان جمع آوری کنیم. برای باز کردن و خواندن از فایل متنی (خط 24) یک شی از کلاس FileStream را ساخته و مسیر فایل ، مقدار Open از نوع شمارشی FileMode و مقدار Read از نوع شمارشی FileAccess را به عنوان آرگومان به سازنده آن ارسال می کنیم.
یک شی StreamReader در خط 25 ساخته و استریم ساخته شده را به عنوان آرگومان به سازنده آن ارسال می کنیم. شی StreamReader ساخته شده مسئول خواندن اطلاعات از فایل متنی است. در خط 27 یک حلقه نوع while ساخته و با استفاده از خاصیت EndOfStream کلاس StreamReader بررسی می کنیم که اشاره گر به انتهای فایل نرسیده باشد. در داخل حلقه از متد ()ReadLine کلاس StreamReader استفاده کرده ایم.این متد از مکان قرار گیری اشاره گر تا انتهای خط را می خواند.سپس اشاره گر را به ابتدای خط بعدی انتقال می دهد. تمامی خط خوانده شده را در متغیر از نوع رشته قرار می دهیم(خط 29). سپس با استفاده از متد ()Split در خط 30 و ارسال کاراکتر # به آن اطلاعات مختلف هر شخص را جدا و در یک آرایه ی رشته ای قرار می دهیم.
یادآوری می شود که در درس قبلی از این کاراکتر (#) به عنوان جداکننده اطلاعات مختلف استفاده شده است. سپس یک شی Person جدید ساخته و مقادیر موجود در عناصر آرایه را به خصوصیات شی ایجاد شده اختصاص می دهیم (34-32). و در انتها آن شی را به لیست اشخاص اضافه می کنیم. هنگامی که کار خواندن از فایل به پایان رسید با استفاده از یک حلقه اطلاعات تمامی اشخاص نمایش داده می شود.

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

  1. احمد پاسخ دادن

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