الصنف File في روبي

من موسوعة حسوب
مراجعة 08:44، 1 ديسمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إضافة محتويات الصفحة.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

الصنف File هو اختصار لأي كائن ملفٍ قابل للوصول عبر البرنامج ومرتبط عن كثب بالصنف IO. يتضمن الصنف File توابع الوحدة FileTest كتوابع صنفٍ مما يسمح لك باستعمال File.exist?("foo")‎ مثلًا.

في شرح توابع الصنف File التالية، تكون بتات الأذونات (permission bits) مجموعة من البتات التي تعتمد على المنصة المستعملة والتي تشير إلى أذونات الملف. في الأنظمة الشبيهة بيونكس، تُعرض الأذونات على شكل مجموعة من ثلاثة ثمانيات (octets)؛ الأولى من أجل المالك، والثانية من أجل المجموعة المالكة، والثالثة تخص الأشخاص الآخرين. في كل واحدة من هذه الثمانية، يمكن ضبط الأذونات فيها إلى أذونات القراءة أو الكتابة أو التنفيذ للملف.

بتات الأذونات 0644 (في الصيغة الثمانية) ستُفسَّر على أنَّها أذونات قراءة وكتابة للمالك، وقراءة فقط للمجموعة المالكة والآخرين. البتات ذات الترتيب الأعلى قد تُستعمل للإشارة إلى نوع الملف (أي هل هو ملفٌ عادي أم مجلد، أم أنبوب، أم مقبس، ...إلخ.) وميزات خاصة أخرى. إن كانت الأذونات لمجلدٍ، فسيكون معنى بت التنفيذ مخالف لما هو معروف، إذ يتيح البحث عن المجلد عند ضبطه ومنحه لهذا لمجلد.

في الأنظمة الغير مطابقة لمعايير POSIX، قد يكون هنالك إمكانية لجعل الملف قابلًا للقراءة أو قابلًا للقراءة والكتابة. في هذه الحالة، ستُجمَّع بتات الأذونات المتبقية لتمثِّل قيم أخرى محدَّدة. في ويندوز NT مثلًا، تشير قيمة بتات الأذونات 0644 الافتراضية إلى أذونات القراءة والكتابة للمالك، والقراءة فقط لبقية المستخدمين. الشي الوحيد الذي يمكن فعله هنا هو جعل الملف قابلًا للقراءة فقط وهذا ما تفعله القيمة 0444.

هنالك ثوابت متنوعة يمكن استعمال مع توابع الصنف File تجدها في صفحة الثوثيق File::Constants.

الثوابت

ALT_SEPARATOR

يمثِّل الفاصل البديل المحدَّد من طرف المنصة المستعملة.

PATH_SEPARATOR

يمثِّل الفاصل المستعمل في فصل قائمة المسارات.

SEPARATOR

يمثِّل الفاصل المستعمل في فصل أجزاء المجلدات في المسار.

توابع الصنف العامة

absolute_path

يحول اسم مسار محدَّد إلى مسار مطلق.

atime

يعيد زمن آخر وصول إلى ملفٍ محدَّدٍ.

basename

يعيد آخر مكوِّن من مسار اسم الملف المعطى. 

birthtime

يعيد وقت إنشاء ملف محدَّد.

blockdev?‎

يتحقق إن كان ملفٌ ما هو جهاز كتلي (block device).

chardev?‎

يتحقق إن كان ملفٌ ما هو جهاز محرفي (character device).

chmod

يغيِّر بتات الأذونات لملف أو عدة ملفات محدَّدة.

chown

يغير المالك والمجموعة المالكة لملف أو عدة ملفات محدَّدة إلى مالك ومجموعة مالكة أخرى.

ctime

يعيد وقت آخر تغيير أجري على ملف محدَّد.

delete

يحذف ملفًا محدَّدًا.

directory?‎

يتحقق إن كان ملفٌ ما مجلَّدًا أو وصلةً رمزيًّةً تشير إلى مجلدٍ.

dirname

يعيد جميع مكونات المسار المعطى لملفٍ باستثناء المكون الأخير (الاسم الأساسي [basename]) الذي يلي آخر فاصل في المسار.

executable?‎

يتحقق إن كان ملفٌ ما قابلًا للتنفيذ من طرف المعرِّف الفعلي للمستخدم المالك والمجموعة المالكة للعملية الحالية.

executable_real?‎

يتحقق إن كان ملفٌ ما قابلًا للتنفيذ من طرف المعرِّف الحقيقي للمستخدم المالك والمجموعة المالكة للعملية الحالية.

exist?‎

يتحقق إن كان ملفٌ ما موجودًا.

exists?‎

أصبح مهملًا. لا تستخدمه رجاءً.

expand_path

يحول مسار ملفٍ ما إلى مسار مطلق مع توسيع الرمز ~ إن وجد في المسار المعطى.

extname

يعيد لاحقة الملف المعطى. لاحقة الملف هي جزء من اسمه وتتوضع في مساره بعد آخر نقطة فيه.

file?‎

يتحقق إن كان ملفٌ ما موجودًا وكان ملفًا طبيعيًّا.

fnmatch

يتحقق من تطابق مسار مع نمط محدَّد.

fnmatch?‎

يتحقق من تطابق مسار مع نمط محدَّد.

ftype

يعرِّف نوع الملف المعطى.

grpowned?‎

يتحقق إن كان ملفٌ ما موجودًا وكان معرِّف المجموعة المالكة الفعلي للعملية التي استدعت التابع هو مالك هذا الملف. 

identical?‎

يتحقق إن كان الملفان المعطيان متماثلين تمامًا.

join

يعيد سلسلة نصية جديدة مكونة من جمع السلاسل النصية المُمرَّرة إليها باستعمال الفاصل "/".

lchmod

يشبه التابع chmod باستثناء أنه لا يتبع الوصلات الرمزية (أي أنه يغير أذونات الوصلة نفسها وليس الملف الذي تشير إليه).

lchown

يشبه التابع chown باستثناء أنه لا يتبع الوصلات الرمزية (أي أنه يغير المالك والمجموعة المالكة للوصلة نفسها وليس للملف الذي تشير إليه).

link

ينشئ اسمًا جديدًا لملف موجود باستعمال وصلة صلبة (hard link).

lstat

يشبه التابع stat باستثناء أنَّه لا يتبع الوصلات الرمزية (أي أنَّه يعيد كائنًا من النوع File::Stat للوصلة نفسها وليس للملف الذي تشير إليه).

lutime

يعين وقتي الوصول والتعديل لملف أو ملفات محدَّدة.

mkfifo

ينشئ ملفًا خاصًّا من النوع "أنبوبة مسماة" (FIFO ويدعى أحيانًا named pipe) باسم وأذونات محدَّدة.

mtime

يعيد وقت التعديل للملف المحدَّد.

new

يفتح ملفًا محدَّدًا وبوضع معيَّن ثم يعيد كائنًا جديدًا من النوع File.

open

يشبه التابع new تمامًا إن لم تعطَ كتلة برمجية معه أو سيمُرَّر الملف بعد فتحه (الكائن File) إلى الكتلة ثم سيُغلق تلقائيًّا عند انتهاء تنفيذ الكتلة.

owned?‎

يتحقق إن كان ملفٌ ما موجودًا وكان مالك هذا الملف هو نفسه المعرِّف الفعلي للمستخدم المالك للعملية التي استدعته.

path

يعيد سلسلة نصية تمثِّل المسار المعطى.

pipe?‎

يتحقق إن كان ملفٌ ما أنبوبًا (pipe).

readable?‎

يتحقق إن كان ملفٌ ما قابلًا للقراءة من طرف مُعرِّف المستخدم والمجموعة الفعلي للعملية الحالية.

readable_real?‎

يتحقق إن كان ملفٌ ما قابلًا للقراءة من طرف مُعرِّف المستخدم والمجموعة الحقيقي للعملية الحالية.

readlink

يعيد اسم الملف الذي تشير إليه الوصلة المعطاة.

realdirpath

يعيد اسم المسار الحقيقي (المطلق) لمسارٍ ما في نظام الملفات الفعلي.

realpath

يعيد اسم المسار الحقيقي (المطلق) لمسارٍ ما في نظام الملفات الفعلي.

rename

يعيد تسمية ملف محدَّد إلى اسم جديد.

setgid?‎

يتحقق إن كان البت setgid (بت معرِّف المجموعة المالكة) مضبوطًا للملف المحدَّد.

setuid?‎

يتحقق إن كان البت setuid (بت معرِّف المستخدم المالك) مضبوطًا للملف المحدَّد.

size

يعيد حجم الملف المحدَّد.

size?‎

يتحقق إن كان ملفٌ ما غير موجود أو معدوم الحجم.

socket?‎

يتحقق إن كان ملفٌ ما مقبسًا.

split

يقتطع مسار الملف المُمرَّر إليه إلى جزأين: أحدهما لمجلد، والآخر للملف ثم يعيدهما في مصفوفة.

stat

يعيد كائنًا من النوع File::Stat للملف المحدَّد.

sticky?‎

يتحقق إن كان ملفٌ ما قد ضُبِط فيه البت اللاصق (sticky bit).

symlink

ينشئ وصلةً رمزيةً باسم محدَّد لملف معيَّن موجود.

symlink?‎

يتحقق إن كان ملفٌ ما وصلةً رمزيةً.

truncate

يقتطع ملفًا ما إلى حجمٍ محدَّدٍ.

umask

يعيد القيمة الحالية للقناع umask للعملية الحالية أو يضبطها إلى قيمة محدَّدة إن مُرِّرت هذه القيمة إليه.

unlink

يحذف ملفًا محدَّدًا.

utime

يضبط وقتي الوصول والتعديل لملف أو عدة ملفات محدَّدة. 

world_readable?‎

يتحقق إن كان ملفٌ ما قابل للقراءة من طرف الآخرين.

world_writable?‎

يعيد إن كان ملفٌ ما قابل للكتابة من طرف الآخرين.

writable?‎

يتحقق إن كان ملفٌ ما قابلًا للكتابة من طرف مُعرِّف المستخدم والمجموعة الفعلي للعملية الحالية.

writable_real?‎

يعيد إن كان ملفٌ ما قابلًا للكتابة من طرف مُعرِّف المستخدم والمجموعة الحقيقي للعملية الحالية.

zero?‎

يتحقق إن كان ملفٌ ما موجودًا وخاويًا (صفر الحجم).

توابع النسخة العامة

atime

يعيد زمن آخر وصول إلى ملفٍ محدَّدٍ، أو وقت الإنشاء للملف إن لم يتم الوصول إليه.

birthtime

يعيد وقت إنشاء ملف محدَّد.

chmod

يغيِّر بتات الأذونات للملف الذي استدعي معه. 

chown

يغير المالك والمجموعة المالكة للملف الذي استدعي معه إلى مالك ومجموعة مالكة أخرى.

ctime

يعيد وقت آخر تغيير أجري على الملف الذي استدعي معه.

flock

يقفل الملف الذي استدعي معه أو يلغي القفل الذي طُبِّق عليه لحماية الملف أثناء إجراء عمليَّة عليه (مثل القراءة منه أو الكتابة عليه) إشارةً إلى أنَّ هذا الملف يُستعمل الآن.

lstat

يشبه التابع IO.stat باستثناء أنَّه لا يتبع الوصلات الرمزية (أي أنَّه يعيد كائنًا من النوع File::Stat للوصلة نفسها وليس للملف الذي تشير إليه).

mtime

يعيد وقت التعديل للملف الذي استدعي معه.

path

يعيد سلسلة نصية تمثِّل المسار الذي استُعمِل لإنشاء الملف الذي استدعي معه.

size

يعيد حجم الملف الذي استدعي معه.

to_path

يعيد سلسلة نصية تمثِّل المسار الذي استُعمِل لإنشاء الملف الذي استدعي معه.

truncate

يقتطع الملف الذي استدعي معه إلى حجمٍ محدَّدٍ.

مصادر