تکین وب | آموزش برنامه نویسی
تکین وب | آموزش برنامه نویسی

کار با فایل ها در سی شارپ (بخش دوم)

۲ مهر ۱۳۹۵

کار با فایل ها(بخش دوم)
خب در بخش قبل درمورد فضای نامی IO یکم صحبت کردیم و گفتیم که این فضا برای کار کردن با فایل ها و ذخیره اطلاعات بر روی فایل ها هست.بعد گفتیم که ابزار مهم این فضای نامی FileStreamهست که دو مشتق خیلی مهم داره
اولین مشتق که همون StreamWriterهست رو توضیح دادیم که برای نوشتن در فایل بود.
در این بخش میخوایم در مورد دومین مشتق از این ابزار رو توضیح بدیم:
B) StreamReader:
این ابزار برای خواندن از فایل استفاده میشه و نکاتی داره که باهم به اون میپردازیم.
یکی از نکات اینه که هر چی از این فایل خوانده بشه به صورت رشته هست یعنی اعداد رو هم بصورت رشته میخونه که شما باید با ابزار های سی شارپ رشته رو به عدد مورد نظر تبدیل کنید.
به عنوان مثال من فایلی دارم که اطلاعات پنج دانشجو و معدل هرکدام به صورت زیر درج شده است :
Ahmad mohammadi
۱۵/۶۲
sadegh moradi
۱۶/۱۳
saeed bagheri
۱۵/۴۲
zahra shokuhi
۱۷/۶۳
sara asadi
۱۵/۱۹
خب میخوام این دانشجو ها و نمراتشون در برنامه من نمایش داده بشه:
برای خواندن دوراه وجود داره اول اینکه فایل رو خط به خط بخونیم و دوم اینکه کل فایل رو بصورت یک جا بخونیم.من در اول کار بصورت خط به خط میخونم تا بهتر متوجه بشید
متد خواندن از فایل به صورت خط به خط بصورت زیر است:


 text.ReadLine ();

منظور از textهمون آبجکتی هست که قراره بسازیم.من فعلا این رو گفتم تا با کدِ خواندن آشنا بشید
خب برای خواندن مراحل زیر رو انجام میدیم:
اول فضای نامی رو به برنامه اضافه میکنیم.البته امیدوارم که خودتون این کارو کروده باشین چون کل موضوع روی این فضا میچرخه
دوم از ابزار filestream آبجکت میسازیم به این صورت که در زیر میبینید


FileStream myfile = new FileStream ("test file", FileMode.open, FileAccess.Read);

سوم از StreamReader آبجکت میسازیم بصورت زیر


StreamReader text=new StreamReader (myfile);

خب فایل مورد نظر باز شده و آماده خواندن هست.
اگر به فایل نگاه کنیم متوجه میشیم که اگر از for استفاده کنیم به دو متغیر نیاز داریم چون در هر دور فقط یک رشته داریم و یک عدد اعشاری.
پس به صورت زیر عمل میکنیم
فرض کنید میخوام این اطلاعات رو داخل labelنمایش بدم به این ترتیب کد رو به این صورت مینویسم
اول به تعداد خطوط فایل مورد نظر نیاز دارم که به اینصورت پیدا میکنم:


int line = File.ReadLines("text.txt").Count();

و بعد


for (int i = 0; i < line/2; i++)
            {
                name = text.ReadLine();
                average = float.Parse((text.ReadLine()).ToString());
                label1.Text += name + "\n" + average + "\n";
            }

و در آخر هم حتما فایل رو ببندید


text.Close();

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


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace file
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            FileStream myfile = new FileStream("test file", FileMode.Open, FileAccess.Read);
            StreamReader text = new StreamReader(myfile);
            string name;
            float average;
            label1.Text = "";//مقدار اولیه  رو پاک کردم
            int line = File.ReadLines("test file").Count();
            for (int i = 0; i < line/2; i++)
            {
                name = text.ReadLine();
                average = float.Parse((text.ReadLine()).ToString());
                label1.Text += name + "\n" + average + "\n";
            }
            text.Close();
        }
    }
}

در ضمن اگر اینستاگرامی هستین فالوو فراموش نشه @takinweb
پایان این بخش 🙂

درباره ی سجاد

دانشجوی کامپیوترم اهل اصفهان به همین سادگی :) :)

دیدگاه ها

دیدگاه خود را به ما بگویید.

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