کلاس FileStream

کلاس FileStream کلاسی از فضای نام System.IO است که از آن برای خواندن از، نوشتن در و بستن فایل استفاده می‌شود. این کلاس از کلاس انتزاعی Stream مشتق می‌شود. برای ایجاد و یا باز کردن یک فایل لازم است که یک شیء از این کلاس ایجاد کنید. دستور استفاده از کلاس FileStream به صورت زیر است :

FileStream object = new FileStream( file, FileMode, FileAccess, FileShare );

در جدول زیر پارامترهایی که سازنده این کلاس دریافت می‌کند، ذکر شده است :

پارامتر توضیح
FileMode این نوع شمارشی دارای مقادیر زیر برای ایجاد و باز کردن فایل‌ها می‌باشد :

  • Append : اگر فایل موجود باشد آن را باز کرده و نشانگر ماوس را به انتهای آن می‌برد و اگر وجود نداشته باشد فایل را ایجاد می‌کند.
  • Create : یک فایل جدید ایجاد می‌کند.
  • CreateNew : یک فایل جدید ایجاد می‌کند.
  • Open : یک فایل موجود را باز می‌کند.
  • OpenOrCreate : یک فایل موجود را باز می‌کند و اگر وجود نداشته باشد آن را ایجاد می‌کند.
  • Truncate : فایل موجود را باز می‌کند و سایز آن را به صفر بایت کاهش می‌دهد.
FileAccess این نوع شمارشی دارای مقادیر Read ،ReadWrite و Write برای خواندن و نوشتن فایل می‌باشد.
FileShare این نوع شمارشی دارای مقادیر زیر می‌باشد :

  • None : اشتراک گذاری فایل موجود را از بین می‌برد.
  • Read : اجازه باز کردن فایل را برای خواندن می‌دهد.
  • ReadWrite : اجازه‌ی باز کردن فایل را برای خواندن و نوشتن می‌دهد.
  • Write: اجازه باز کردن فایل را برای نوشتن می‌دهد.

بهتر است که هنگام استفاده از این کلاس از دستور using استفاده کنید. استفاده از این دستور باعث فراخوانی متد ()Dispose شده و با پاک کردن شیء ایجاد شده از کلاس FileStream باعث دسترسی دیگران به فایل می‌شود. اگر شیء ایجاد شده از FileStream را پاک نکنید ارتباط با فایل قطع نمی‌شود و فایل تا زمانی که زباله روب (garbage collector) شیء را پاک نکند آزاد نمی‌شود.

using (FileStream Object = new FileStream())
{
    // Read from file or Write to file
}

روش دیگر برای از بین بردن شیء FileStream استفاده از دستور try و فراخوانی متد ()Close به صورت زیر است :

FileStream Object = new FileStream();
try
{
    // Read from file or Write to file
}
finally
{
    Object.Close();
}

به کد زیر توجه کنید :

using System;
using System.IO;

namespace FileStreamDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            using (FileStream fileStream = new FileStream(@"C:\File.txt", FileMode.CreateNew))
            {                                                                                 
                Console.WriteLine("The File Create Successfully ");                           
            }                                                                                 
        }
    }
}
The File Create Successfully

همانطور که در کد بالا مشاهده می‌کنید ما یک شیء از کلاس FileStream در داخل دستور using ایجاد کرده‌ایم. سپس در داخل سازنده این کلاس گفته‌ایم که یک فایل به نام File.txt در داخل درایو C ایجاد کند. برای ایجاد فایل مقدار نوع شمارشی FileMode را برابر CreateNew قرار داده‌ایم. حال اگر درایو C را باز کنید مشاهده می‌کنید که فایلی با نام File.txt ایجاد شده است. کد بالا را به صورت زیر هم می‌توان نوشت :

using System;
using System.IO;

namespace FileStreamDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream fileStream = new FileStream(@"C:\File.txt", FileMode.CreateNew);
            try                                                                        
            {                                                                          
                Console.WriteLine("The File Create Successfully ");                    
            }                                                                          
            finally                                                                    
            {                                                                          
                fileStream.Close();                                                    
            }                                                                          
        }
    }
}
The File Create Successfully