یکی از کلاس های سی شارپ (C#) برای کار با فایل ها کلاس FileStream هست که در این مطلب با این کلاس آشنا خواهید شد. برای مثال، می خواهیم فایلی را باز کرده و محتویات فایل تغییر ایجاد کنیم. ابتدا بهتر است با مفهوم Stream در زبان سی شارپ آشنا شویم.
در زبان سی شارپ، Stream کلاسی است که لیستی از byte ها را در خود نگهداری می کند که این byte ها می توانند اطلاعات مربوط به یک فایل، به یک device، ارتباط تحت شبکه و یا موارد مشابه باشد. در دات نت، کلاس پایه Stream و کلاس های زیر مجموعه آن امکان کار با انواع این Stream ها را به ما می دهد. کلاس های مرتبط با Stream ها امکانات زیر را در اختیار ما قرار می دهند:
حال که با مفهوم Stream تا حدودی آشنا شدیم، می توانیم به سراغ بحث کار با فایل ها برویم.
کلاس FileStream، در حقیقت یه لایه انتزاعی (Abstraction Layer) بر روی فایل ها در دات نت می باشد. ما بوسیله کلاس FileStream امکان خواندن، نوشتن و همچنین تغییر در فایل ها را داریم. با یک مثال ساده شروع می کنیم، قطعه کد زیر یک فایل را باز کرده متنی را داخل آن می نویسد:
FileStream file = File.Create("D:\\data.dat"); var data = System.Text.Encoding.UTF8.GetBytes("Welcome to ITPro.ir."); file.Write(data, 0, data.Length);
در کد بالا، ابتدا بوسیله متد Create که در کلاس File قرار دارد یک فایل با نام data.dat ایجاد می کنیم. متد Create یک شئ از نوع FileStream برای برمی گرداند که می توانیم به وسیله آن با فایل ایجاد شده کار کنیم. در قدم بعدی رشته ای را تبدیل به آرایه ای از byte ها کرده و در نهایت بوسیله متد Write که در کلاس FileStream تعریف شده، عبارت مورد نظر را در فایل می نویسیم. دقت کنید متد Write سه پارامتر به عنوان ورودی میگیرد، پارامتر اول، آرایه ایست که شامل اطلاعات مورد جهت نوشتن در فایل است، پارامتر دوم ایندکس شروع برای خواندن byte ها را مشخص می کند و پارامتر سوم طول اطلاعات که باید خوانده شود، در اینجا ما از ایندکس 0 و به اندازه کل اطلاعات موجود در آرایه data را در فایل می نویسیم.اما یک مشکل وجود دارد، کد بالا، در هر صورت فایل جدیدی ایجاد می کند و محتویات فایل قبلی در صورت وجود داشتن از بین میرود. برای حل این مشکل می توانیم از متد Open در کلاس File استفاده کنیم. در مثال زیر عملیات باز کردن و نوشتن در فایل را با متد Open انجام می دهیم:
FileStream file = File.Open("D:\\data.dat", FileMode.OpenOrCreate); file.Seek(file.Length, SeekOrigin.Begin); var data = System.Text.Encoding.UTF8.GetBytes("This is a sample test"); file.Write(data, 0, data.Length);
به متد Open دقت کنید، این متد دو پارامتر میگیرد، یکی مسیر فایل مورد نظر و پارامتر دوم که چگونگی حالت باز کردن فایل را مشخص می کند، حالت های زیر را می توان برای این پارامتر انتخاب کرد:
در کد بالا، فایل را در حالت OpenOrCreate باز کردیم، سپس بوسیله دستور Seek به انتهای فایل رفتیم، پارامتر اول دستور Seek موقعیتی که می خواهیم در فایل در آن قرار بگیریم را مشخص می کند و پارامتر دوم مشخص می کند که جهت حرکت به سمت موقعیت مشخص شده از ابتدای فایل در نظر گرفته شود، از انتهای فایل یا از موقعیت جاری. خصوصیت Length که در کلاس FileStream تعریف شده است، طول فایل را بر میگرداند.
به این نکته دقت داشته باشید، زمانی که فایلی را باز می کنید، در صورت قرار گرفتن در موقعیتی در میان فایل و نوشتن در آن موقعیت، اطلاعات بر روی byte های موقعیت مشخص شده نوشته می شوند اطلاعات در فایل درج نمی شود که این موضوع می تواند باعث از دست رفتن اطلاعات فایل شما شود.
علاوه بر متد Open که در کلاس File برای باز کردن یک فایل تعریف شده است، می توان از متدهای زیر نیز برای باز کردن یک فایل استفاده کرد:
در این قسمت سعی کردیم یک مرور اولیه بر روی مفاهیم اصلی کار با فایل ها به صورت Stream ها را داشته باشیم. در مطالب بعدی در مورد ویژگی های دیگری که در زمینه کار با فایل ها می باشد صحبت خواهیم کرد
بنیانگذار توسینسو و برنامه نویس و توسعه دهنده ارشد وب
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ...
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود