دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۶
  • اردیبهشت

جلسه ۱۶ : آموزش مدیریت فایل ها در پرل

  • دسته‌بندی‌ها :
جلسه ۱۶ : آموزش مدیریت فایل ها در پرل
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      با سلام خدمت کاربران گرامی سایت پی وی لرن و کاربرانی که علاقمندان به دوره آموزشی پرل Perl. در جلسه گذشته با فرمت و کار با آن ها آشنا شدیم. در این جلسه یعنی ۱۶ جلسه از سلسله جلسات آموزش پرل، با آموزش مدیریت فایل ها در پرل همراه شما خواهیم بود.

      آموزش مدیریت فایل ها در پرل

      آموزش مدیریت فایل ها در پرل سعی می کند که شما را با اصول این کار آشنا نماید.
      اصول مدیریت فایل ها در پرل بسیار ساده است :
      برای این کار باید filehandle را با یک مورد خارجی ( معمولاً یک فایل ) مرتبط سازید و سپس از چندین اپراتور و تابع موجود در پرل برای خواندن و به روز رسانی اطلاعات ذخیره شده در جریان داده ها مرتبط با filehandle استفاده نمایید.

      یک filehandle یک named internal Perl است که فایل فیزیکی را به اسم آن متصل می کند.
      همه filehandle قادر به خواندن و نوشتن دسترسی ها هستند. بنابرین می توان هر فایل یا دستگاه مرتبط با یک filehandle را خواند و به روز رسانی کرد.
      با این حال وقتی یک filehandle را متصل می سازید؛ می توانید مشخص کنید که حالت باز شدن آن چگونه باشد.

      سه نوع filehandle پایه وجود دارد.
      STDINSTDOUT و STDERR که به ترتیب نشان دهنده ورودی استاندارد، خروجی استاندارد و دستگاه های خطای استاندارد هستند.

      در ادامه به نحوه باز کردن و بستن فایل ها در آموزش مدیریت فایل ها در پرل می پردازیم.

      باز کردن و بستن فایل ها

      به طور کل دو نوع تابع با فرم های متفاوت برای باز کردن هر فایل جدید در پرل وجود دارد.

      مثال : 

      FILEHANDLE در کد بالا file handle است که توسط تابع open بازگردانی شده است و EXPR عباراتی است که نام فایل و حالت بازگشایی فایل را دارد.

      تابع Open

      در ادامه سینتکسی که از آن برای باز کردن file.txt در حالت read-only mode استفاده می شود را می بینید.
      در این جا کمتر از علامت > که از آن برای باز کردن فایل در حالت read-only استفاده می شود؛ استفاده شده است.

      مثال : 

      DATA در مثال بالا file handle ماست که از آن برای خواندن فایل استفاده می کنند.
      در ادامه مثالی آورده شده که در آن یک فایل و محتوای در صفحه باز شده و پرینت شده است.

      مثال : 

      در ادامه سینتکسی که از آن برای باز کردن file.txt در حالت writing mode استفاده می شود را می بینید.
      در این جا کمتر از علامت < که از آن برای باز کردن فایل در حالت writing mode استفاده می شود؛ استفاده شده است.

      مثال : 

      این مثال فایل را قبل از باز کردن و نوشتن در آن اقدام به کوتاه سازی (پاک سازی) می کند که ممکن است اثر دلخواه شما نباشد.
      اگر می خواهید فایلی را برای خواندن و نوشتن باز کنید می توانید یک علامت + قبل از کاراکتر  > or < بگذارید.
      برای باز کردن یک فایل به منظور به روز رسانی آن بدون کوتاه سازی آن، می توانید از مثال زیر استفاده نمایید.

      مثال : 

      برای کوتاه سازی فایل از نمونه زیر استفاده نمایید.

      مثال : 

      می توان یک فایل را در حالت الحاق append mode نیز باز کرد.
      در این حالت writing point باید برای پایان دادن به فایل تنظیم شود.

      مثال : 

      یک << دوبله فایل را برای الحاق باز می کند و file pointer را در انتها جایگذاری می نماید؛ بنابرین می توان فوراً الحاق اطلاعات را آغاز نمود.
      با انجام این کار گرچه دیگر نمی توانید فایل را بخوانید اما قرار دادن یک علامت + در مقابل آن این مشکل را حل می نماید.

      مثال : 

      در ادامه می توانید مقادیر حالت های متفاوت ممکن را ببینید.

      •  or r >
        تنها دسترسی ها را می خواند.
      • or w >
        وظیفه نوشتن و ایجاد و کوتاه سازی ها را بر عهده دارد.
      • or a >
        وظیفه نوشتن، افزودن و ساختن و ایجاد را بر عهده دارد
      • + or r >+
        وظیفه نوشتن و خواندن را دارد.
      •  +or r <+
        وطیفه خواندن، نوشتن، ساختن و کوتاه سازی را بر عهده دارد.
      • +or a <<+
        وظیفه خواندن، نوشتن، افزودن و ساختن را دارد.

      تابع Sysopen

      تابع Sysopen تا حد زیادی شبیه به تابع open است.
      این تابع از سیستم تابع open و پارامترهای ارائه شده به آن به عنوان پارامترهای عملکرد سیستم استفاده می نماید.
      برای مثال می توانید برای به روز رسانی یک فایل از فرمت باز filename>+ استفاده نمایید.

      مثال : 

      اگر قصد کوتاه سازی فایل قبل ار به روز رسانی آن را دارید از نمونه زیر استفاده نمایید.

      مثال : 

      می توانید از :
      O_CREAT برای ساخت یک فایل جدید
      -O_WRONLY برای باز کردن فایل در write only mode
      و O_RDONLY برای باز کردن فایل در read only mode
      استفاده نمایید.

      PERMS argument مجوز های فایل را برای file specified مشخص می نماید.
      اگر این بخش باید ساخته شود در این صورت به صورت پیش فرض مقدار آن ۰x666 است.

      در ادامه آموزش کار مدیریت فایل ها در پرل مقادیر ممکن MODE را به شما معرفی می نماییم.

      • O_RDWR
        انجام وظیفه خواندن و نوشتن
      • O_RDONLY
        فقط وظیفه خواندن را بر عهده دارد.
      • O_WRONLY
        فقط وظیفه نوشتن را بر عهده دارد.
      • O_CREAT
        وظیفه ساخت فایل را بر عهده دارد.
      • O_APPEND
        الحاق سازی فایل را بر عهده دارد.
      • O_TRUNC
        کوتاه سازی فایل را بر عهده دارد.
      • O_EXCL
        اگر فایل در حال حضور وجود داشته باشد در آن صورت آن را متوقف می نماید.
      • O_NONBLOCK
        وظیفه استفاده از Non-Blocking را بر عهده دارد.

      در ادامه آموزش مدیریت فایل ها در پرل شما را با تابع Close در پرل آشنا می نماییم.

      تابع Close

      برای بستن یک filehandle و جدا کردن آن از corresponding file باید از تابع close استفاده نمایید.
      این امر موجب می شود که filehandle’s buffers خالی شود و سیستم فایل descriptor را می بندد.

      مثال : 

      اگر هیچ FILEHANDLE تعیین نشده باشد در آن صورت filehandle انتخاب شده فعلی بسته خواهد شد.
      اگر buffers ها با موفقیت خالی شوند و فایل بسته شود در آن صورت true only بازگردانی می شود.

      مثال : 

      خواندن و نوشتن فایل ها

      برای باز کردن filehandle ابتدا باید قادر باشید که اطلاعات را بخوانید و بنویسید.
      روش های زیادی برای نوشتن و خواندن داده ها در درون فایل ها وجود دارد.

      اپراتور <FILEHANDL>

      اپراتور <FILEHANDLE> روش اصلی برای خواندن اطلاعات از یک filehandle باز است.
      در اسکالر context، این روش موجب بازگردانی یک خط از filehandle می شود.
      به مثال زیر توجه نمایید.

      مثال : 

      وقتی از اپراتور <FILEHANDLE> در لیست context استفاده می نمایید، یک لیست از خطوط مشخص filehandle بازگردانی می شوند.
      در مثال زیر می توانید ببینید که چطور همه خطوط فایل را درون یک array وارد شده اند.

      مثال : 

      تابع getc

      تابع getc یک کاراکتر را از FILEHANDLE مشخص شده یا STDIN بازگردانی می نماید.

      مثال : 

      اگر یک خطا وجود داشته باشد، یا filehandle در پایان فایل باشد، در آن صورت undef به جای آن بازگردانده خواهد شد.

      تابع read

      تابع read دیگر تابعی است که در آموزش مدیریت فایل ها در پرل به آن می پردازیم.
      تابع read یک بلوک از اطلاعات را از buffered filehandle می خواند.
      از این تابع برای خواندن داده های باینری از فایل استفاده می شود.

      مثال : 

      طول داده read توسط LENGTH تعریف شده است، و در صورت عدم OFFSET، داده ها در ابتدای SCALAR قرار می گیرند. در غیر این صورت داده ها بعد از بایت های OFFSET در SCALAR قرار خواهند گرفت.
      این تابع تعدادی از بایت هایی که با موفقیت خوانده شده اند را بازگردانی می نماید.
      اگر خطایی وجود داشته باشد در آن صورت یک صفر یا undef در پایان فایل قرار می گیرد.

      تابع print

      برای تمام روش های مختلفی که برای خواندن اطلاعات از filehandles، تابع اصلی برای نوشتن اطلاعات، تابع print است.

      مثال : 

      تابع print مقادیر ارزیابی شده از LIST to FILEHANDLE یا مقدار خروجی filehandle را پرینت می نماید. (STDOUT by default).
      به مثال زیر توجه نمایید.

      مثال : 

      در ادامه آموزش مدیریت فایل ها در پرل شما را با کپی سازی فایل ها در این زبان آشنا می نماییم.

      کپی سازی فایل ها

      در زیر می توانید نمونه ای را ببینید که فایل file1.txt را باز می کند و خط آن را به صورت خطی می خواند و فایل file2.txt دیگری را تولید می نماید.

      مثال : 

      تغییر نام یک فایل

      در مثال زیر می توانید ببینید که چگونه می توان فایل file1.txt را به فایلfile2.txt تغییر نام داد.
      فرض می کنیم که این فایل در دایرکتوری in /usr/test وجود دارد.

      مثال : 

      این تابع تغییر نام دو argument را انجام می دهد و فقط فایل موجود را تغییر می دهد.

      حذف یک فایل موجود در پرل

      در تابع زیر می توانید ببینید که چگونه فایل file1.txt را با استفاده از تابع unlink حذف کنید.

      مثال : 

      موقعیت یابی درون یک فایل

      می توانید از تابع tell استفاده نمایید تا موقعیت فعلی یک فایل را بیابید و از تابع seek استفاده نمایید تا به یک موقعیت خاص در تابع اشاره نمایید.

      تابع tell

      اولین قدم برای یافتن موقعیت تان در فایل استفاده از تابع tell است.

      مثال : 

      این تابع موقعیت اشاره گر فایل را در بیت ها با استفاده از FILEHANDLE مشخص می کند و یا filehandle انتخابی پیش فرض فعلی را اگر از قبل مشخص نشده باشد تعیین می نماید.

      تابع seek

      تابع seek موقعیت اشاره گر فایل را تعیین می کند تا تعدادی از بایت ها در فایل تعیین نماید.

      مثال : 

      این تابع از عملکرد سیستم fseek استفاده می کند و می توان سه موقعیت متفاوت را در آن تعیین کرد: شروع، پایان، و موقعیت فعلی.
      می توان این کار را به وسیله WHENCE انجام داد.
      صفر موقعیت مرتبط با ابتدای فایل را تنظیم می نماید.
      برای مثال خط اشاره گر فایل را به بایت ۲۵۶ در فایل قرار می دهد.

      مثال : 

      اطلاعات فایل

      با استفاده از یک سری از اپراتورهای تست که به طور کلی به عنوان تست -X شناخته می شوند می توانید ویژگی های خاصی را به سرعت در پرل تست نمایید.

      مثال : 

      کلام آخر

      در این جلسه آموزش مدیریت فایل ها در پرل را به شما ارائه نمودیم.
      در جلسه بعدی به آموزش دایرکتوری ها خواهیم پرداخت.
      با پی وی لرن همراه باشید.

      QR:  جلسه ۱۶ : آموزش مدیریت فایل ها در پرل
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر