آموزش سیشارپ – بخش ۶۸
- مقدمه
آنچه را که در بخش ۶۷ام از سری آموزشهای زبان برنامهنویسی سیشارپ فرا گرفتید، در رابطه با نحوه باز کردن فایل و خواندن اطلاعات داخل آن بود. در این بخش قصد داریم که به شما نحوه نوشتن در داخل یک فایل را آموزش دهیم، پس همراه با ما باشید.
- نوشتن داخل یک فایل متنی در سیشارپ
برای آنکه داخل یک فایلِ متنی بنویسیم، میبایست که از کلاس StreamWriter بجای StreamReader استفاده کنیم، اگرچه نحوه استفاده از این کلاس کاملاً شبیه به StreamReader است. دقت داشته باشید:
System.IO.StreamWriter objWriter;
objWriter = new System.IO.StreamWriter(file_name);
در کدهای فوق، همانطور که میبینید، ابتدا یک شیء از کلاس StreamWriter به اسم objWriter ایجاد کردیم. وقتی که یک شیء از StreamWriter ایجاد میشود، شما با استفاده از نام فایل، آن را کنترل میکنید؛ اما تفاوت streamWriter با StreamReader اینجاست که اگر نام فایل داده شده موجود نباشد، هیچگونه خطایی رخ نخواهد داد، و بجای آن، فایل جدیدی با همان اسمی که تعیین شده است در محل مورد نظر ایجاد خواهد شد.
به فرم خود یک button جدید دیگری اضافه کنید. بر روی button جدید خود دابل کلیک کرده و کدهای زیر را در داخل آن بنویسید. دقت کنید که اگر نسخهی سیستمعامل شما بالاتر از XP است، میتوانید همانند روش جلسه پیشین در آدرس دهی استفاده کنید.
به خط کدی که در حال نوشتن بر روی فایل است دقت کنید:
objWriter.Write(textBox1.text);
پس از قرار دادن نقطه، از متد Write استفاده کنید. مابین پرانتزهای این متد که محل دریافت آٰگومانها میباشد، آنچه را که میخواهید در فایل نوشته شود را قرار دهید. در این مثال، ما میخواستیم که هر آنچه در داخل Textbox نوشته میشود را در فایل قرار دهیم.
فراموش نشود که پس از اتمام عملیات، StreamWriter را ببندید که این کار توسط کد زیر صورت گرفت:
objWriter.Close();
اگر بخواهید بجای اینکه عملیات نوشتن را بصورت یکجا انجام دهید، بصورت خط به خط باشد، میتوانید بجای متد Write() از متد WriteLine() استفاده کنید. بصورت زیر:
objWriter.WriteLine();
در مابین پرانتزهای این متد، شما خطهایی را که میخواهید در فایل متن خود قرار دهید را اضافه میکنید. بصورت معمول این کار توسط حلقه صورت میگیرد و زمانی بدرد شما میخورد که یک آرایه از متنها داشته باشید و بخواهید آنها را در یک فایل ذخیره کنید. در تصویر زیر، یک نمونه برای شما ایجاد شده است که میتوانید آن را مشاهده و استفاده کنید. خودتان این کدها را امتحان کنید و نتیجه را بررسی کنید؛ مطمئناً متوجه عملکرد آن خواهید شد.
حلقه for دقیقاً مکانیست که در آن هر خط از متنها را در فایل مینویسیم.
- الحاق کردن متن به فایل
وقتی که شما از یکی از متدهای Write() و یا WriteLine() استفاده میکنید، فایل کنونی شما را بصورت کلی ویرایش خواهد کرد؛ بدین صورت که محتوای فعلی آن را پاک کرده و محتوای شما را در آن جایگزین میکند. پس اگر شما button خود را دو بار کلیک کنید، متن جدید به متن قبل الحاق نخواهد شد.
اگر که میخواهید متنهای بیشتر را به متنهای کنونی اضافه کنید، در این صورت شما میبایست که متن فعلی را به متن قبلی الحاق کنید. در سیشارپ، عمل الحاق کردن بسیار راحت است. کافیست که از کد زیر استفاده شود:
objWriter = new System.IO.StreamWriter(File_name, true);
در واقع، هنگام ایجاد آن شیء، در مابین پرانتزها، شما میبایست که در آرگومان دوم مقدار true را حتماً قرار دهید. در این صورت، بجای بازنویسی فایل شما، اقدام به الحاق متنهای جدید به متنهای قبلی میکند. این مقدار بصورت پیشفرض false است.
خیلی ممنون از مطالب مفیدتون
یه سوالی داشتم؟؟
چطوری میتونیم متنی راکه الحاق کردیم در messagebox نمایش بدیم؟
سلام دوست عزیز،
من دقیقاً متوجه سوال شما نشدم؛ وقتی که متنی رو وارد میکنید و میخواید اون رو الحاق کنید به فایل قبلی، خوب بالاخره در مکانی مثل textbox و یا یک متغیر از نوع string بشکل موقت ذخیره شده. میتونید با استفاده از MessageBox.Show() اون متن الحاقی رو نمایش بدید.
اگر اشتباه متوجه سوال شما شدم عرض بفرمایید راهنمایی کنم.
مفید می باشد ممنون
سلام .من یه سوال دارم ……………
داخل ویژوال بسیک میشه از توابع داخلی ویندوز با به اختصار API استفاده کرد که قدرت برنامه رو چندین برابر میکنه …
میخواستم ببینم سی شارپم از این جور چیزا پشتیبانی میکنه یا نه …
و اگه میشه لطف کنین یه چند تا بخشم بهش اختصاص بدین …
مخلصه شما ENERGY
ممنون از سایتتون