درخواست های ارتباط
جستجو
    لیست دوستان من
    صندوق پیام
    همه را دیدم
    • در حال دریافت لیست پیام ها
    صندوق پیام
    رویدادها
    همه را دیدم
    • در حال دریافت لیست رویدادها
    همه رویدادهای من

    تا 75 درصد تخفیف ویژه شب یلدا بر روی کلیه محصولات وب سایت توسینسو فقط تا 30 آذر

    مانده تا پایان تخفیف ها

    تخفیف های وب سایت
    همه تخفیف ها

    عضویت در

    کانال تلگرام

    توسینسو

    اطلاعات مطلب
      مدرس/نویسنده
      حسین احمدی
      امتیاز: 212242
      رتبه:3
      342
      253
      403
      2719
      حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ... پروفایل کاربر
      دوره های مرتبط
      دوره های توسینسو دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      دوره آموزشی برنامه نویسی اندروید با زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 27 قسط خریداری کنید
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      دوره آموزشی برنامه نویسی به زبان پرل بصورت پروژه محور
      مدرس: ایمان جوادی
      این دوره را در 13 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      دوره آموزشی مقدماتی برنامه نویسی جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 17 قسط خریداری کنید
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      دوره آموزشی برنامه نویسی پیشرفته زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 78 قسط خریداری کنید
      دوره آموزشی طراحی رابط کاربری با JavaFX
      دوره آموزشی طراحی رابط کاربری با JavaFX
      مدرس: حسام رسولیان
      این دوره را در 13 قسط خریداری کنید
      دوره متوسطه برنامه نویسی به زبان جاوا به زبان ساده
      دوره متوسطه برنامه نویسی به زبان جاوا به زبان ساده
      مدرس: مهدی عادلی فر
      این دوره را در 18 قسط خریداری کنید
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      ساخت و مدیریت ربات تلگرام از صفر با زبان سی شارپ
      مدرس: مهدی عادلی فر
      این دوره را در 2 قسط خریداری کنید
      دوره آموزشی ساخت ربات تلگرام
      دوره آموزشی ساخت ربات تلگرام
      مدرس: کاظم تقندیکی
      این دوره را در 8 قسط خریداری کنید
      دوره آموزشی Exploit نویسی به زبان Perl
      دوره آموزشی Exploit نویسی به زبان Perl
      مدرس: ایمان جوادی
      این دوره را در 7 قسط خریداری کنید
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      دوره آموزشی پردازش متن با زبان برنامه نویسی پایتون
      مدرس: کاظم تقندیکی
      این دوره را در 20 قسط خریداری کنید
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      دوره آموزشی اسکریپت نویسی Batch یا Batch Scripting در ویندوز به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      دوره آموزشی مقدماتی برنامه نویسی به زبان سی شارپ
      مدرس: حسین احمدی
      این دوره را در 17 قسط خریداری کنید
      دوره آموزشی برنامه نویسی مقدماتی پایتون به زبان ساده
      دوره آموزشی برنامه نویسی مقدماتی پایتون به زبان ساده
      مدرس: حسین احمدی
      این دوره را در 23 قسط خریداری کنید
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      دوره تخصصی آموزش متن کاوی با ابزار NLTK
      مدرس: کاظم تقندیکی
      این دوره را در 11 قسط خریداری کنید
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      دوره آموزشی برنامه نویسی WPF در ویژوال استودیو
      مدرس: امیر حسین فضلیخانی
      این دوره را در 12 قسط خریداری کنید

      کار با فایل ها بوسیله کلاس FileStream

      تاریخ 30 ماه قبل
      نظرات 0
      بازدیدها 1832
      قبلاً در سایت ITPRO با کلاس فایل و متدهایی که برای خواندن و نوشتن فایل ها استفاده می شوند آشنا شدیم. اما موضوعی هست و آن هم اینکه چگونه با فایلی که وجود دارد کار کنیم. برای مثال، می خواهیم فایلی را باز کرده و محتویات فایل تغییر ایجاد کنیم. برای حل این مشکل، در این مطلب قصد داریم تا با Stream ها جهت کار با فایل آشنا شویم. ابتدا بهتر است با مفهوم Stream در زبان سی شارپ آشنا شویم.


      Stream چیست؟


      در زبان سی شارپ، Stream کلاسی است که لیستی از byte ها را در خود نگهداری می کند که این byte ها می توانند اطلاعات مربوط به یک فایل، به یک device، ارتباط تحت شبکه و یا موارد مشابه باشد. در دات نت، کلاس پایه Stream و کلاس های زیر مجموعه آن امکان کار با انواع این Stream ها را به ما می دهد. کلاس های مرتبط با Stream ها امکانات زیر را در اختیار ما قرار می دهند:

      1. خواندن اطلاعات از Stream ها که این اطلاعات در قالب ساختار داده ای متفاوت مانند آرایه ای از byte ها در اختیار ما قرار میگیرد.
      2. نوشتن در Stream ها. عملیات نوشتن پروسه انتقال اطلاعات از یک ساختار داده ای به یک Stream است.
      3. امکان موقعیت یابی و دریافت بخشی از اطلاعات از یک Stream که اصطلاحاً به آن Seeking می گویند. قابلیت Seek کاملاً وابسته به ساختاری است که Stream در پس زمینه با آن کار می کند. برای مثال در محیط شبکه، مفهوم موقعیت یابی برای Stream ها مفهومی ندارد و در حقیقت از این قابلیت پشتیبانی نمی کند.

      حال که با مفهوم Stream تا حدودی آشنا شدیم، می توانیم به سراغ بحث کار با فایل ها برویم.


      کلاس FileStream


      کلاس 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 دقت کنید، این متد دو پارامتر میگیرد، یکی مسیر فایل مورد نظر و پارامتر دوم که چگونگی حالت باز کردن فایل را مشخص می کند، حالت های زیر را می توان برای این پارامتر انتخاب کرد:

      1. Open: فایل را باز میکند و در صورت عدم وجود فایل پیغام خطای FileNotFoundException ایجاد می شود.
      2. Append: فایل را باز کرده و مستقیم Position یا موقعیت جاری در فایل را برای تغییر به انتهای فایل انتقال می دهد. در کد بالا برای رفتن به انتهای فایل از متد Seek در FileStream استفاده کردیم. اما در صورت انتخاب این حالت، عملیات Seek به صورت خودکار جهت انتقال به انتهای فایل انجام می شود.
      3. Create: فایل جدیدی ایجاد می کند و در صورت وجود فایل، فایل جدید جایگزین آن می شود.
      4. CreateNew: در این حالت فایل جدیدی ایجاد می شود، اما در صورت وجود فایل همنام خطای IOException ایجاد می شود.
      5. OpenOrCreate: در این حالت فایل مشخص شده از طریق پارامتر path که پارامتر اول متد Open است را باز کرده و در صورت عدم وجود فایل آن را ایجاد می کند.
      6. Truncate: این حالت، فایل را ایجاد می کند و در صورت وجود داشتن فایل، کلیه محتویات فایل را پاک می کند.

      در کد بالا، فایل را در حالت OpenOrCreate باز کردیم، سپس بوسیله دستور Seek به انتهای فایل رفتیم، پارامتر اول دستور Seek موقعیتی که می خواهیم در فایل در آن قرار بگیریم را مشخص می کند و پارامتر دوم مشخص می کند که جهت حرکت به سمت موقعیت مشخص شده از ابتدای فایل در نظر گرفته شود، از انتهای فایل یا از موقعیت جاری. خصوصیت Length که در کلاس FileStream تعریف شده است، طول فایل را بر میگرداند.

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

      علاوه بر متد Open که در کلاس File برای باز کردن یک فایل تعریف شده است، می توان از متدهای زیر نیز برای باز کردن یک فایل استفاده کرد:

      1. متد OpenRead: فایلی را در حالت فقط خواندنی باز می کند و امکان نوشتن در آن وجود نخواهد داشت. در صورت عدم وجود فایل، پیغام خطا دریافت خواهیم کرد.
      2. متد OpenWrite: فایلی جهت نوشتن باز می کند، در صورت عدم وجود فایل، فایل جدیدی ایجاد خواهد شد.

      در این قسمت سعی کردیم یک مرور اولیه بر روی مفاهیم اصلی کار با فایل ها به صورت Stream ها را داشته باشیم. در مطالب بعدی در مورد ویژگی های دیگری که در زمینه کار با فایل ها می باشد صحبت خواهیم کرد. ITPRO باشید

      نویسنده: حسین احمدی
      وب سایت تخصصی فناوری اطلاعات ایران
      برچسب ها
      مطالب مرتبط

      در حال دریافت اطلاعات

      نظرات
      هیچ نظری ارسال نشده است

        برای ارسال نظر ابتدا به سایت وارد شوید