www.doronamir.com

E-mail: doron@doronamir.com

 

 

 

גישה לקובץ ע"י FileStream & StreamReader

בתכנית הנ"ל ניתן לגשת לקובץ טקסט ולבדוק את כמות התווים והשורות שיש בקובץ כולל בדיקה עבור מספר התווים המופעים גם בקובץ וגם במחרוזת הטקסט "דורון". בתכנית 2 קבצים Form1,TestFile.cs הקובץ Form1 מכיל את עיצוב התכנית המורכב מתוויות תצוגה Labels ופקד תפריט Menu

המאפשר גישה לקובץ וביצוע שליפת התווים מהקובץ והעברתם למערך . בהמשך התכנית נעביר את המערך למתודה סטטית הנמצאת במחלקה TestFile

הנמצאת בקובץ TestFile.cs. . המתודה בודקת את סוגי התווים ובעזרת פרמטר Out היא מעבירה את ערכי המונים אל פקדי התצוגה.

בסיום התכנית נקבל את מספר התווים שיש בקובץ וגם קיימים במחרוזת ,מספר התווים שאינם מופיעים גם במחרוזת ,מספר השורות ומספר סה"כ כל התווים.

 

הקובץ המיועד לבדיקה ומיקומו

ריצת התכנית

 

         

קובץ המחלקה

שים לב! אין חובה להפריד בין הקבצים אך מומלץ להפריד ולערוך את הפרוייקט באופן מודולרי כדי להקל על אחזקת הקוד ונוחות הגישה

 

using System;

 

namespace DoronAmir2 // המחלקה שייכת לאותו מרחב שמות

{

public class TetsFile  // מחלקה לבדיקת התווים שבקובץ

    {

// מתודה סטטית המאפשרת גישה דרך שם המחלקה ללא יצירת אובייקט

        public static void Test(char[] CharArray,out int DCount,out int ECount , out int LCount,out int CharCount)

        {

 

             DCount = 0;// מונה את התווים בקובץ הקיימים גם בשם דורון

             ECount = 0;// Doron מונה עבור תווים שאינם בשם 

             LCount = 1;//מונה את השורות בקובץ

             CharCount=0;//סה"כ כל התווים

             bool IsEmptyFile = true;//אם הקובץ ריק אפס שורות

            foreach (char Point in CharArray)

            {

                if (Char.IsLetter(Point))// בדיקה עבור ערף של תו

                {

                    IsEmptyFile=false;// הקובץ לא ריק

 

                    if ("DORONdoron".IndexOf(Point) != -1) // בדיקה האם התו נמצא בשם דורון

                    {

                        DCount++;  // קידום מונה עבור תווים שמופיעים בשם דורון

                    }

                    else

                    {

                        ECount++;// קידום מונה עבור תווים שלא מופיעים בשם דורון

                    }

                }

                else if (Point == '\n') // בדיקה האם התו מציין ירידת שורה

                {

                    LCount++; // קידום מונה שורות

                }

            }

            CharCount= CharArray.Length;  

            if(IsEmptyFile==true)//אם הקובץ ריק אפס שורות

            {

            LCount=0;// איפוס מונה שורות

            }

        }

    }

}

 

קוד קובץ התצוגה

 

        static void Main()

        {

            Application.Run(new Form1());

        }

 

        private void mnuReadFile_Click(object sender, System.EventArgs e)

        {

            string fileName = @"c:/app/DoronAmir.txt";//קליטת שם הקובץ

            //הצבעה לקובץ כולל סימון מצב פתיחה

            FileStream stream = new FileStream(fileName, FileMode.Open);

            // בניית אובייקט עבור גישה לנתונים

            StreamReader reader = new StreamReader(stream);

            // מדידת אורך הקובץ - מספר התווים הכללי

            int size = (int)stream.Length;

            //בניית מערך מסוג התו המיועד להכיל את התווים

            char[] CharArray = new char[size];

            // אתחול המערך בתווים

            for (int i = 0; i < size; i++)

            {

                CharArray[i] = (char)reader.Read();//שליפת התווים

            }

            //סגירת אובייקט הקריאה

            reader.Close();

            //הגדרת משתני קליטה

            int DCount,ECount,LCount,CharCount;

            //מסירת המערך לבדיקה

            TetsFile.Test(CharArray,out DCount,out ECount,out LCount,out CharCount);

            //הדפסת המשתנים

            lblDcount.Text=DCount.ToString();

            lblECount.Text=ECount.ToString();

            lblLcount.Text=LCount.ToString();

            lblCharCount.Text=CharCount.ToString();

        }

 

       

    }