Ruby/File
الصنف 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
يعرِّف التابع ftype
نوع الملف المعطى.
grpowned?
يتحقق إن كان ملفٌ ما موجودًا وكان معرِّف المجموعة المالكة الفعلي للعملية التي استدعت التابع هو مالك هذا الملف.
identical?
يتحقق إن كان الملفان المعطيان متماثلين تمامًا.
join
يعيد التابع join
سلسلة نصية جديدة مكونة من جمع السلاسل النصية المُمرَّرة إليها باستعمال الفاصل "/".
lchmod
يشبه التابع chmod
باستثناء أنه لا يتبع الوصلات الرمزية (أي أنه يغير أذونات الوصلة نفسها وليس الملف الذي تشير إليه).
lchown
يشبه التابع chown
باستثناء أنه لا يتبع الوصلات الرمزية (أي أنه يغير المالك والمجموعة المالكة للوصلة نفسها وليس للملف الذي تشير إليه).
link
ينشئ اسمًا جديدًا لملف موجود باستعمال وصلة صلبة (hard link).
lstat
يشبه التابع stat
باستثناء أنَّه لا يتبع الوصلات الرمزية (أي أنَّه يعيد كائنًا من النوع File::Stat
للوصلة نفسها وليس للملف الذي تشير إليه).
lutime
يعين التابع lutime
وقتي الوصول والتعديل لملف أو ملفات محدَّدة.
mkfifo
ينشئ ملفًا خاصًّا من النوع "أنبوبة مسماة" (FIFO ويدعى أحيانًا named pipe) باسم وأذونات محدَّدة.
mtime
يعيد وقت التعديل للملف المحدَّد.
new
يفتح ملفًا محدَّدًا وبوضع معيَّن ثم يعيد كائنًا جديدًا من النوع File
.
open
يشبه التابع open
التابع new
تمامًا إن لم تعطَ كتلة برمجية معه أو سيمُرَّر الملف بعد فتحه (الكائن File
) إلى الكتلة ثم سيُغلق تلقائيًّا عند انتهاء تنفيذ الكتلة.
owned?
يتحقق إن كان ملفٌ ما موجودًا وكان مالك هذا الملف هو نفسه المعرِّف الفعلي للمستخدم المالك للعملية التي استدعته.
path
يعيد سلسلة نصية تمثِّل المسار المعطى.
pipe?
يتحقق إن كان ملفٌ ما أنبوبًا (pipe).
readable?
يتحقق إن كان ملفٌ ما قابلًا للقراءة من طرف مُعرِّف المستخدم والمجموعة الفعلي للعملية الحالية.
readable_real?
يتحقق إن كان ملفٌ ما قابلًا للقراءة من طرف مُعرِّف المستخدم والمجموعة الحقيقي للعملية الحالية.
readlink
يعيد اسم الملف الذي تشير إليه الوصلة المعطاة.
realdirpath
يعيد اسم المسار الحقيقي (المطلق) لمسارٍ ما في نظام الملفات الفعلي.
realpath
يعيد اسم المسار الحقيقي (المطلق) لمسارٍ ما في نظام الملفات الفعلي.
rename
يعيد تسمية ملف محدَّد إلى اسم جديد.
setgid?
يتحقق إن كان البت setgid
(بت معرِّف المجموعة المالكة) مضبوطًا للملف المحدَّد.
setuid?
يتحقق إن كان البت setuid
(بت معرِّف المستخدم المالك) مضبوطًا للملف المحدَّد.
size
يعيد حجم الملف المحدَّد.
size?
يتحقق إن كان ملفٌ ما غير موجود أو معدوم الحجم.
socket?
يتحقق إن كان ملفٌ ما مقبسًا.
split
يقتطع مسار الملف المُمرَّر إليه إلى جزأين: أحدهما لمجلد، والآخر للملف ثم يعيدهما في مصفوفة.
stat
يعيد التابع stat
كائنًا من النوع File::Stat
للملف المحدَّد.
sticky?
يتحقق إن كان ملفٌ ما قد ضُبِط فيه البت اللاصق (sticky bit).
symlink
ينشئ وصلةً رمزيةً باسم محدَّد لملف معيَّن موجود.
symlink?
يتحقق إن كان ملفٌ ما وصلةً رمزيةً.
truncate
يقتطع ملفًا ما إلى حجمٍ محدَّدٍ.
umask
يعيد القيمة الحالية للقناع umask
للعملية الحالية أو يضبطها إلى قيمة محدَّدة إن مُرِّرت هذه القيمة إليه.
unlink
يحذف ملفًا محدَّدًا.
utime
يضبط وقتي الوصول والتعديل لملف أو عدة ملفات محدَّدة.
world_readable?
يتحقق إن كان ملفٌ ما قابل للقراءة من طرف الآخرين.
world_writable?
يعيد إن كان ملفٌ ما قابل للكتابة من طرف الآخرين.
writable?
يتحقق إن كان ملفٌ ما قابلًا للكتابة من طرف مُعرِّف المستخدم والمجموعة الفعلي للعملية الحالية.
writable_real?
يعيد التابع writable_real?
إن كان ملفٌ ما قابلًا للكتابة من طرف مُعرِّف المستخدم والمجموعة الحقيقي للعملية الحالية.
zero?
يتحقق إن كان ملفٌ ما موجودًا وخاويًا (صفر الحجم).