یک فایل مجموعه ای از اطلاعات ذخیره شده در یک دیسک با یک نام خاص و یک مسیر دایرکتوری است. هنگامی که یک فایل برای خواندن یا نوشتن باز می شود، به یک جریان تبدیل می شود.
جریان اساسا توالی بایت ها از طریق مسیر ارتباطی است. دو جریان عمده وجود دارد: جریان ورودی و جریان خروجی. جریان ورودی برای خواندن داده ها از فایل (عملیات خواندن) استفاده می شود و جریان خروجی برای نوشتن در فایل (عملیات نوشتن) استفاده می شود.
کلاسهای 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(); } } }