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


جریان اساسا توالی بایت ها از طریق مسیر ارتباطی است. دو جریان عمده وجود دارد: جریان ورودی و جریان خروجی. جریان ورودی برای خواندن داده ها از فایل (عملیات خواندن) استفاده می شود و جریان خروجی برای نوشتن در فایل (عملیات نوشتن) استفاده می شود.


کلاسهای I / O C #

فضای نام System.IO دارای کلاس های مختلفی است که برای انجام عملیات های متعدد با فایل ها، از قبیل ایجاد و حذف فایل ها، خواندن یا نوشتن در یک فایل، بستن یک فایل و غیره استفاده می شود.


جدول زیر برخی از کلاسهای غیر انتزاعی معمول در فضای نام System.IO را نشان می دهد.



1

BinaryReader

خواندن داده های اولیه از یک جریان باینری
2

BinaryWriter

داده های اولیه را در قالب باینری وارد می کند.
3

BufferedStream

ذخیره سازی موقت برای یک جریان از بایت ها.
4

Directory

در دستکاری ساختار دایرکتوری کمک می کند.
5

DirectoryInfo

مورد استفاده برای انجام عملیات در دایرکتوری ها.
6

DriveInfo

اطلاعات برای درایوها را فراهم می کند.
7

File

کمک در دستکاری فایل ها.
8

FileInfo
برای انجام عملیات در فایل ها مورد استفاده قرار می گیرد.
9

FileStream

مورد استفاده برای خواندن و نوشتن به هر مکان در یک فایل.
10

MemoryStream

برای دسترسی تصادفی به داده های جریان داده شده ذخیره شده در حافظه مورد استفاده قرار می گیرد.
11

Path
عملیات را بر روی اطلاعات مسیر انجام می دهد.
12

StreamReader
برای خواندن کاراکترها از یک جریان بایت مورد استفاده قرار می گیرد.
13

StreamWriter

برای نوشتن کاراکترها به یک جریان استفاده می شود.
14

StringReader

برای خواندن از یک بافر رشته استفاده می شود.
15

StringWriter

برای نوشتن در یک بافر رشته مورد استفاده قرار می گیرد.


کلاس FileStream

کلاس FileStream در System.IO namespace به خواندن، نوشتن و بستن فایل ها کمک می کند. این کلاس از جریان کلاس انتزاعی حاصل می شود.

شما باید یک شی FileStream را برای ایجاد یک فایل جدید یا باز کردن یک فایل موجود ایجاد کنید. نحو ایجاد یک شی FileStream به شرح زیر است:

 using (FileStream fileStream =File.Create(@"C:\programs\example1.txt"))
using (StreamWriter writer = new StreamWriter(fileStream))
{
writer.WriteLine("Example 1 written");
}
Console.WriteLine("DONE");


پارامترها


FileMode

شمارنده فایل FileMode روش های مختلف برای باز کردن فایل ها را تعریف می کند. اعضای شمارنده FileMode -

     Append - این یک فایل موجود را باز می کند و در انتهای فایل قرار می دهد، یا فایل را ایجاد می کند، اگر فایل وجود نداشته باشد.

     ایجاد - یک فایل جدید ایجاد می کند.

     CreateNew - این به سیستم عامل مشخص می کند که باید یک فایل جدید ایجاد کند.

     باز - این یک فایل موجود باز می شود.

     OpenOrCreate - آن را به سیستم عامل مشخص می کند که اگر آن فایل را باز کند، باید یک فایل جدید ایجاد کند.

     Truncate - این یک فایل موجود را باز می کند و اندازه آن را صفر بایت می کند.

دسترسی به فایلAccess Mode
شمارنده های پرونده دسترسی دارای اعضا هستند: خواندن، خواندن و نوشتن.



اشتراک فایل

شمارنده FileShare دارای اعضای زیر است -

     مقرون به رسمیت شناختن - این اجازه می دهد تا یک دسته فایل برای انتقال وراثت به فرآیندهای کودک

     هیچکدام - به اشتراک گذاری فایل فعلی کاهش می یابد

     خواندن - این اجازه می دهد تا فایل را برای readin باز کنیم.

     ReadWrite - اجازه می دهد فایل را برای خواندن و نوشتن باز کند

     نوشتن - این اجازه می دهد تا باز کردن فایل برای نوشتن


مثالی برای file stream

using System;
using System.IO;

namespace FileIOApplication {
   class Program {
      static void Main(string[] args) {
         FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, 
            FileAccess.ReadWrite);
         
         for (int i = 1; i <= 20; i++) {
            F.WriteByte((byte)i);
         }
         F.Position = 0;
         for (int i = 0; i <= 20; i++) {
            Console.Write(F.ReadByte() + " ");
         }
         F.Close();
         Console.ReadKey();
      }
   }
}

نتیجه اجرا

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1


StreamWriter


در c #، StreamWriter یک کلاس از فضای نام System.IO است و برای نوشتن شخصیت ها به جریان با یک کدگذاری خاص مفید است. کلاس StreamWriter از TextWriter استخراج شده است تا اجرا اعضا را برای نوشتن به یک جریان انجام دهد و به طور پیش فرض، از UTF8Encoding استفاده می کند مگر اینکه کدام دیگر را مشخص کنیم.

 

در حال حاضر، نحوه استفاده از کلاس StreamWriter در c # را برای نوشتن متن به فایل با نمونه ها خواهیم دید.
C # StreamWriter مثال

در زیر نمونه ای از نوشتن متن به فایل با استفاده از شی StreamWriter در c # است.




using System;

using System.IO;



namespace TutlaneExamples

{

class Program

{

static void Main(string[] args)

{

string fpath = @"D:\Test.txt";

// Check if file exists

if (File.Exists(fpath))

{

// ایجاد نمونه StreamReader برای خواندن از یک فایل
using (StreamReader sr = new StreamReader(fpath))

{

string txt;

//خوندن فایل تازمانیکه به اخر برسه

while ((txt = sr.ReadLine()) != null)

{

Console.WriteLine(txt);

}

}

}

Console.ReadLine();

}

}

}



در c #، BinaryWriter یک کلاس از فضای نام System.IO است و مفید است که اطلاعات باینری را به جریان با یک کدگذاری خاص بنویسید. بطور پیش فرض BinaryWriter از رمزگذاری UTF-8 استفاده می کند مگر اینکه کدام دیگر را مشخص کنیم.

 

حالا،  خواهیم دید که چگونه از کلاس BinaryWriter در c # استفاده کنید تا اطلاعات باینری را به فایل با مثال های خود اضافه کنید.
مثال C # BinaryWriter

در زیر نمونه ای از نوشتن یک متن به فایل در فرم باینری با استفاده از شی BinaryWriter در c # است.



using System.IO;



namespace TutlaneExamples

{

class Program

{

static void Main(string[] args)

{

string fpath = @"D:\Test.txt";

// Check file if exists

if (File.Exists(fpath))

{

File.Delete(fpath);

}

using (BinaryWriter bw = new BinaryWriter(File.Open(fpath,FileMode.Create)))

{

bw.Write(1.25);

bw.Write("Welcome to Csharp");

bw.Write(10);

bw.Write(true);

bw.Write("test");

}

}

}

}


 و یه مثال از باینری ریدر



using System;

using System.IO;



namespace TutlaneExamples

{

class Program

{

static void Main(string[] args)

{

string fpath = @"D:\Test.txt";

// Writing values to file

if (File.Exists(fpath))

{

File.Delete(fpath);

}

using (BinaryWriter bw = new BinaryWriter(File.Open(fpath, FileMode.Create)))

{

bw.Write(1.25);

bw.Write("Welcome to Csharp");

bw.Write(10);

bw.Write(true);

bw.Write("test");

}

// Reading Values by creating BinaryReader instance

using (BinaryReader br = new BinaryReader(File.Open(fpath, FileMode.Open)))

{

Console.WriteLine(br.ReadDouble());

Console.WriteLine(br.ReadString());

Console.WriteLine(br.ReadInt32());

Console.WriteLine(br.ReadBoolean());

Console.WriteLine(br.ReadString());

}

Console.ReadLine();

}

}

}