آموزش استفاده از کلاس FileStream و نوشتن یک فایل در سی شارپ
#آموزش استفاده از کلاس FileStream و نوشتن یک فایل در #سی_شارپ
یک شئ از کلاس FileStream میسازیم این کلاس 13 سازنده داره و یه سازنده ای که بیشترین استفاده رو داره قراره استفاده کنیم :
FileStream(String, FileMode);
برای شروع یک شی از این کلاس میسازیم و از سازنده ای که گفتم استفاه میکنیم و پارامتر هاشو میدیم :
FileStream file = new FileStream ("C:\\Test.txt", FileMode.Create);
پارامتر اول آدرس و اسم فایل رو مینویسیم و پارامتر دوم که یک enum به اسم FileMode هست کارش نحوه عملکرد سیستم برای باز کردن پرونده رو مشخص می کنه که 6 مقدار داره :
- CreateNew : فقط فایل جدید میسازد و فایل از قبل ساخته شده را باز نمیکند
- Create : فایل را میسازد و اگر وجود داشت آن را بازسازی میکند
- Open : فقط فایلی که وجود دارد را باز میکند
- OpenOrCreate : اگر فایل وجود نداشت آن را میسازد وگرنه آن را باز میکند
- Truncate : فقط فایلی که وجود دارد را باز میکند و بایت های فایل را موقع نوشتن صفر میکند
- Append : اگر فایل وجود نداشت آن را میسازد وگرنه آن را باز میکند و به انتقای فایل متن اضافه میکند
خب حالا یک متغیر آرایه از نوع byte میسازیم به اسم buffer و length آن را 2048 میزاریم تا جا واسه بافرمون داشته باشه :
byte[] buffer = new byte[2048];
و یک متغیر دیگه از جنس string به اسم text و یک مقدار میدیم بهش :
string text = "Hello World.";
حالا میخوایم متغیر text رو تبدیل به بافر کنیم باید به char تبدیلش کنیم و بعد کاراکتر هارو به بایت و بریزیم داخل متغیر بافرمون و واسه اینکار از حلقه for کمک میگیریم :
char[] textChars = text.ToCharArray();
تابع ToCharArray از کلاس string کاراکتر های متنمون رو به صورت یه متغیر char آرایه ای بر میگردونه و میریزیم داخل متغیر textChars
for (int i = 0; i < textChars.Length)
{
buffer[i] = Convert.ToByte(textChars[i]);
}
کلاس Convert از کتابخونه System
از تابع ToByte این کلاس استفاده میکنیم و کاراکتر رو تبدیل به بایت میکنیم و میریزیم داخل بافر index متغیر i حلقه ی for
و در آخر این بافرمون آمادست و میخوایم از متغیر فایلمون استفاده کنیم و متن Hello World. رو با استفاده از بافرمون داخل فایل بنویسیم
به همین دلیل از تابع Write کلاس FileStream استفاده می کنیم :
file.Write (buffer, 0, buffer.Length);
این تابع 3 تا پارامتر داره اولی بافر میخواد آرایه ای از بایت ها و پارامتر دوم عدد صحیح int که offset رو مشخص میکنیم نقطه ای که قراره شروع به نوشتن متنمون کنیم رو باهاش مشخص میکنیم و پارامتر سوم طول یا تعداد یا همون length رو میخواد که مثلا شما بنویسید 10 میاد 10 کاراکتر اول متنمون رو فقط روی فایل مینویسه ولی ما میایم length خود بافرمون رو میدیم تا داینامیک و به همون تعداد باشه متن رو هر چقدر طول بدیم بهش باز همونو مینویسه برامون
و در انتهای کار باید این فایل رو ببندیم و به کار پایان بدیم
file.Close();
این تابع میاد کار و فایل رو میبنده و دیگه بعد از اجرای این تابع نمیتونین از این متغیر file استفاده کنین
و اینکه فایل آمادست و میتونین هر اطلاعاتی ذخیره کنید هر فایل پکیجی بسازید و...