الفرق بين المراجعتين لصفحة: «Ruby/IO»
لا ملخص تعديل |
جميل-بيلوني (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 2: | سطر 2: | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby IO]] | [[تصنيف: Ruby IO]] | ||
الصنف <code>IO</code> هو أساس كل عمليات الإدخال والإخراج في روبي. مجرى الدخل/الخرج (I/O stream) قد يكون مزدوج الاتجاه (duplexed، أي في اتجاهين)، وبذلك قد يُستخدَم أكثر من مجرى واحد من مجاري نظام التشغيل. | |||
الكثير من الأمثلة الواردة في في هذا القسم تستخدم الصنف <code>[[Ruby/File|File]]</code>، وهو االصنف الفرعي (subclass) القياسي الوحيد للصنف <code>IO</code> | الكثير من الأمثلة الواردة في في هذا القسم تستخدم الصنف <code>[[Ruby/File|File]]</code>، وهو االصنف الفرعي (subclass) القياسي الوحيد للصنف <code>IO</code>، إذ يرتبط الصنفان ارتباطًا وثيقًا. | ||
مثل | مثل الصنف [[Ruby/File|<code>File</code>]]، فإنّ المكتبة Socket تشتق أصنافًا فرعيةً من الصنف <code>IO</code> (مثل <code>TCPSocket</code> أو <code>UDPSocket</code>). | ||
يمكن أن ينشئ التابع <code>[[Ruby/Kernel/open|Kernel | يمكن أن ينشئ التابع <code>[[Ruby/Kernel/open|Kernel.open]]</code> كائنات من الصنف <code>IO</code> (أو <code>[[Ruby/File|File]]</code>) من أنواع الوسائط التالية: | ||
*[[Ruby/String|سلسلة نصية]] لتمثيل اسم ملف مناسب لنظام التشغيل المستخدم. | *[[Ruby/String|سلسلة نصية]] لتمثيل اسم ملف مناسب لنظام التشغيل المستخدم. | ||
*[[Ruby/String|سلسلة نصية]] تبدأ بالمحرف <code>"|"</code> كناية عن عملية فرعية (subprocess). يتم استدعاء الجزء | *[[Ruby/String|سلسلة نصية]] تبدأ بالمحرف <code>"|"</code> كناية عن عملية فرعية (subprocess). يتم استدعاء الجزء الذي يلي المحرف <code>"|"</code> من [[Ruby/String|السلسلة النصية]] [[Ruby/Process|كعملية]] (process)؛ هذه العملية ستكون متصلة بقنوات الدخل/الخرج (د/خ) المناسبة. | ||
*إن كانت [[Ruby/String|السلسلة النصية]] تساوي <code>"|-"</code>، فسيتم إنشاء نسخة (instance) أخرى من روبي كعملية فرعية. | *إن كانت [[Ruby/String|السلسلة النصية]] تساوي <code>"|-"</code>، فسيتم إنشاء نسخة (instance) أخرى من روبي كعملية فرعية. | ||
يمكن فتح مجرى د/خ (<code>IO</code>) مع مختلف أوضاع الملفات ( | يمكن فتح مجرى د/خ (<code>IO</code>) مع مختلف أوضاع الملفات (مثل وضع القراءة فقط [read-only] أو الكتابة فقط [write-only]) ووفق الترميزات المناسبة لأجل إجراء عمليات التحويل. انظر صفحة التابع <code>[[Ruby/IO/new|new]]</code> للتعرف على هذه الخيارات، وانظر صفحة <code>[[Ruby/Kernel/open|Kernel.open]]</code> لمزيد من التفاصيل حول مختلف تنسيقات الأوامر المذكورة أعلاه. | ||
يمكن أيضًا استخدام التابع <code>[[Ruby/IO/popen|popen]]</code> أو المكتبة <code>Open3</code> أو <code>[[Ruby/Process/spawn|Process | يمكن أيضًا استخدام التابع <code>[[Ruby/IO/popen|popen]]</code> أو المكتبة <code>Open3</code> أو التابع <code>[[Ruby/Process/spawn|Process.spawn]]</code> للتواصل مع العمليات الفرعية عبر مجرى د/خ. | ||
ستُحول روبي أسماء المسارات بما يتوافق مع نظام التشغيل المستخدم إن أمكن. | ستُحول روبي أسماء المسارات بما يتوافق مع نظام التشغيل المستخدم إن أمكن. على سبيل المثال، في نظام ويندوز، سيُفتح اسم الملف <code>"/gumby/ruby/test.rb"</code> باعتباره <code>"\gumby\ruby\test.rb"</code>. | ||
عند تحديد اسم ملف بنمط ويندوز في [[Ruby/String|سلسلة نصية]]، تذكر أن | عند تحديد اسم ملف بنمط ويندوز في [[Ruby/String|سلسلة نصية]]، تذكر أن تهرِّب (escape) الخطوط المائلة العكسية مثل:<syntaxhighlight lang="ruby">"C:\\gumby\\ruby\\test.rb"</syntaxhighlight>سوف نستخدم في الأمثلة الموجودة في صفحات التوابع الخطوط المائلة للأمام على نمط اليونيكس؛ يمكن الحصول على المحرف الفاصل للمجلدات في المسارات الخاص بنظام التشغيل عبر الثابت <code>[[Ruby/File#ALT SEPARATOR|File::ALT_SEPARATOR]]</code>. | ||
يوفر الثابت العام <code>[[Ruby/ARGF|ARGF]]</code> (يمكن الوصول إليه عبر <code>$<</code>) مجرًى مشابهًا لمجرى د/خ (I/O)، والذي يسمح بالوصول إلى كافة الملفات المذكورة في سطر الأوامر (أو في المجرى <code>STDIN</code> في حال لم يذكر أي ملف). يمكن استخدام التابع <code>[[Ruby/ARGF/path|ARGF.path]]</code> وبديله <code>[[Ruby/ARGF/filename|ARGF.filename]]</code> للوصول إلى اسم الملف الذي تتم قراءته حاليًا. | |||
==الملحقة io/console== | ==الملحقة io/console== | ||
توفر الملحقة io/console توابع للتفاعل مع وحدة التحكم (console). يمكن الوصول إلى وحدة التحكم عبر التابع <code>IO.console</code>، أو من | توفر الملحقة io/console توابع للتفاعل مع وحدة التحكم (console). يمكن الوصول إلى وحدة التحكم (أو الطرفية) عبر التابع <code>IO.console</code>، أو من مجاري الدخل والخرج القياسية التي هي <code>input</code> و <code>output</code> و <code>error</code>. | ||
استيراد io/console يؤدي إلى إضافة التوابع التالية: | استيراد io/console يؤدي إلى إضافة التوابع التالية: | ||
سطر 31: | سطر 31: | ||
*<code>IO#cooked!</code> | *<code>IO#cooked!</code> | ||
*<code>IO#getch</code> | *<code>IO#getch</code> | ||
*<code>IO#echo=</code> | *<code>IO#echo=</code> | ||
*<code>IO#echo?</code> | *<code>IO#echo?</code> | ||
*<code>IO#noecho</code> | *<code>IO#noecho</code> | ||
*<code>IO#winsize</code> | *<code>IO#winsize</code> | ||
سطر 39: | سطر 39: | ||
*<code>IO#ioflush</code> | *<code>IO#ioflush</code> | ||
*<code>IO#oflush</code> | *<code>IO#oflush</code> | ||
إليك المثال التالي حول استدعاء الملحقة io/console وإضافتها لاستعمال التابع <code>winsize</code>:<syntaxhighlight lang="ruby">require 'io/console' | |||
rows, columns = $stdout.winsize | rows, columns = $stdout.winsize | ||
puts "Your screen is #{columns} wide and #{rows} tall"</syntaxhighlight> | puts "Your screen is #{columns} wide and #{rows} tall"</syntaxhighlight> | ||
===[[Ruby/IO/copy stream| copy_stream]]=== | == الثوابت == | ||
ينسخ | |||
===[[Ruby/IO/for fd| for_fd]]=== | === <code>EWOULDBLOCKWaitReadable</code> === | ||
اطلع على صفحة الصنف <code>[[Ruby/IO::EAGAINWaitReadable|IO::EAGAINWaitReadable]]</code>. | |||
===[[Ruby/IO/foreach| foreach]]=== | |||
ينفذ | === <code>EWOULDBLOCKWaitWritable</code> === | ||
===[[Ruby/IO/new| new]]=== | اطلع على صفحة الصنف <code>[[Ruby/IO::EAGAINWaitWritable|IO::EAGAINWaitWritable]]</code>. | ||
===[[Ruby/IO/open| | === <code>SEEK_CUR</code> === | ||
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من الموضع الحالي له. | |||
===[[Ruby/IO/pipe| pipe]]=== | |||
ينشئ | === <code>SEEK_DATA</code> === | ||
===[[Ruby/IO/popen| popen]]=== | يضبط موضع مؤشِّر عملية الدخل والخرج إلى الموقع التالي الذي يحتوي على البيانات. | ||
ينفذ | |||
===[[Ruby/IO/read| read]]=== | === <code>SEEK_END</code> === | ||
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من النهاية. | |||
=== <code>SEEK_HOLE</code> === | |||
يضبط موضع مؤشِّر عملية الدخل والخرج إلى الفجوة التالية. | |||
=== <code>SEEK_SET</code> === | |||
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من البداية. | |||
==توابع الصنف العامة== | |||
===[[Ruby/IO/binread|<code>binread</code>]]=== | |||
يفتح الملف ثم يحرِّك موضع المؤشر بمقدار محدد (في حال إعطائه) ثم يجلب جميع محتوى الملف بدءًا من موضع المؤشر وحتى نهاية الملف أو يجلب حجم محدَّد من البيانات. | |||
===[[Ruby/IO/binwrite|<code>binwrite</code>]]=== | |||
يشبه التابع <code>[[Ruby/IO/write|write]]</code> باستثناء أنه يفتح الملف في الوضع الثنائي (binary mode) وبالترميز ASCII-8BIT. | |||
===[[Ruby/IO/copy stream|<code>copy_stream</code>]]=== | |||
ينسخ بيانات من مجرى إلى مجرى آخر. | |||
===[[Ruby/IO/for fd|<code>for_fd</code>]]=== | |||
يعد مرادفًا للتابع <code>[[Ruby/IO/new|new]]</code>. | |||
===[[Ruby/IO/foreach|<code>foreach</code>]]=== | |||
ينفذ الكتلة المعطاة على كل سطر في منفذ مجرى د/خ المسمى. | |||
===[[Ruby/IO/new|<code>new</code>]]=== | |||
ينشئ كائنًا جديدًا من النوع <code>IO</code>. | |||
===[[Ruby/IO/open|<code>open</code>]]=== | |||
يشبه التابعَ <code>[[Ruby/IO/new|new]]</code> تمامًا عند استدعائه دون كتلة، أو يُمرّر الكائن <code>IO</code> الذي جرى إنشاؤه كوسيط إلى الكتلة المعطاة ثم يعيد الناتج الذي تعيده الكتلة. | |||
===[[Ruby/IO/pipe|<code>pipe</code>]]=== | |||
ينشئ زوجًا من طرفي أنبوب (pipe endpoints) متصلين ببعضهما بعضًا ثم يعيدهما على هيئة [[Ruby/Array|مصفوفة]] من الكائنات <code>IO</code>. | |||
===[[Ruby/IO/popen|<code>popen</code>]]=== | |||
ينفذ الأمر المعطى كعملية فرعية (subprocess) مع توصيل المجرَيَين القياسيين للدخل والخرج للعملية الفرعية مع المجرى <nowiki/>[[Ruby/IO|<code>IO</code>]] المُعاد. | |||
===[[Ruby/IO/read|read]]=== | |||
يفتح الملف، ثم يتموضع اختياريا عند الموضع المعطى | يفتح الملف، ثم يتموضع اختياريا عند الموضع المعطى | ||
===[[Ruby/IO/readlines| readlines]]=== | ===[[Ruby/IO/readlines|readlines]]=== | ||
يقرأ كامل الملف المحدد | يقرأ كامل الملف المحدد | ||
===[[Ruby/IO/select| select]]=== | ===[[Ruby/IO/select|select]]=== | ||
يستدعي <code>select(2)</code>. ويقوم بمراقبة [[Ruby/Array|المصفوفة]] المعطاة المكونة من [[Ruby/IO|مجاري د/خ]] (كائنات <code>IO</code>)، وينتظر حتى يكون أحدها جاهزًا للقراءة، وجاهزا للكتابة، ويكون لها استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد [[Ruby/Array|مصفوفة]] تحتوي على [[Ruby/Array|مصفوفات]] مكونة من [[Ruby/IO|مجاري د/خ]] | يستدعي <code>select(2)</code>. ويقوم بمراقبة [[Ruby/Array|المصفوفة]] المعطاة المكونة من [[Ruby/IO|مجاري د/خ]] (كائنات <code>IO</code>)، وينتظر حتى يكون أحدها جاهزًا للقراءة، وجاهزا للكتابة، ويكون لها استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد [[Ruby/Array|مصفوفة]] تحتوي على [[Ruby/Array|مصفوفات]] مكونة من [[Ruby/IO|مجاري د/خ]] | ||
===[[Ruby/IO/sysopen| sysopen]]=== | ===[[Ruby/IO/sysopen|sysopen]]=== | ||
يفتح المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]]. | يفتح المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]]. | ||
===[[Ruby/IO/try convert| try_convert]]=== | ===[[Ruby/IO/try convert|try_convert]]=== | ||
يحاول تحويل الوسيط المعطى إلى [[Ruby/IO|مجرى د/خ]] | يحاول تحويل الوسيط المعطى إلى [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/write| write]]=== | ===[[Ruby/IO/write|write]]=== | ||
يفتح الملف، ويتموضع اختياريا عند الإزاحة <code>offset</code> المعطاة | يفتح الملف، ويتموضع اختياريا عند الإزاحة <code>offset</code> المعطاة | ||
سطر 79: | سطر 103: | ||
===[[Ruby/IO/left shift| <<]]=== | ===[[Ruby/IO/left shift| <<]]=== | ||
مجرى الإخراج النصي | مجرى الإخراج النصي | ||
===[[Ruby/IO/advise| advise]]=== | ===[[Ruby/IO/advise|advise]]=== | ||
يعلن عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد. | يعلن عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد. | ||
===[[Ruby/IO/autoclose-3D| autoclose=]]=== | ===[[Ruby/IO/autoclose-3D|autoclose=]]=== | ||
يُعيّن قيمة راية الإغلاق التلقائي. | يُعيّن قيمة راية الإغلاق التلقائي. | ||
===[[Ruby/IO/autoclose-3F| autoclose?]]=== | ===[[Ruby/IO/autoclose-3F|autoclose?]]=== | ||
يُعيد القيمة <code>true</code> إن كان واصف الملف الأساسي ل[[Ruby/IO|مجرى د/خ]] سيُغله تلقائياً عند الانتهاء منه، وإلا سيُعيد <code>false</code>. | يُعيد القيمة <code>true</code> إن كان واصف الملف الأساسي ل[[Ruby/IO|مجرى د/خ]] سيُغله تلقائياً عند الانتهاء منه، وإلا سيُعيد <code>false</code>. | ||
===[[Ruby/IO/binmode| binmode]]=== | ===[[Ruby/IO/binmode|binmode]]=== | ||
يضع [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode). | يضع [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode). | ||
===[[Ruby/IO/binmode-3F| binmode?]]=== | ===[[Ruby/IO/binmode-3F|binmode?]]=== | ||
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode). | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode). | ||
===[[Ruby/IO/bytes| bytes]]=== | ===[[Ruby/IO/bytes|bytes]]=== | ||
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each byte|each_byte]]</code>. | مرادف مُتجاوز للتابع <code>[[Ruby/IO/each byte|each_byte]]</code>. | ||
===[[Ruby/IO/chars| chars]]=== | ===[[Ruby/IO/chars|chars]]=== | ||
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each char|each_char]]</code>. | مرادف مُتجاوز للتابع <code>[[Ruby/IO/each char|each_char]]</code>. | ||
===[[Ruby/IO/close| close]]=== | ===[[Ruby/IO/close|close]]=== | ||
يغلق [[Ruby/IO|مجرى د/خ]]، وينقل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل. | يغلق [[Ruby/IO|مجرى د/خ]]، وينقل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل. | ||
===[[Ruby/IO/close on exec-3D| close_on_exec=]]=== | ===[[Ruby/IO/close on exec-3D|close_on_exec=]]=== | ||
يعين الراية close-on-exec. | يعين الراية close-on-exec. | ||
===[[Ruby/IO/close on exec-3F| close_on_exec?]]=== | ===[[Ruby/IO/close on exec-3F|close_on_exec?]]=== | ||
يُعيد القيمة <code>true</code> إن كانت الراية close_on_exec الخاصة ب[[Ruby/IO|مجرى د/خ]] تساوي <code>true</code>. | يُعيد القيمة <code>true</code> إن كانت الراية close_on_exec الخاصة ب[[Ruby/IO|مجرى د/خ]] تساوي <code>true</code>. | ||
===[[Ruby/IO/close read| close_read]]=== | ===[[Ruby/IO/close read|close_read]]=== | ||
يغلق طرف القراءة الخاص بمجرى [[Ruby/IO|مجرى د/خ]] | يغلق طرف القراءة الخاص بمجرى [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/close write| close_write]]=== | ===[[Ruby/IO/close write|close_write]]=== | ||
يغلق طرف الكتابة الخاص ب[[Ruby/IO|مجرى د/خ]] | يغلق طرف الكتابة الخاص ب[[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/closed-3F| closed?]]=== | ===[[Ruby/IO/closed-3F|closed?]]=== | ||
يعيد القيمة <code>true</code> ان كان [[Ruby/IO|مجرى د/خ]] مغلقًا | يعيد القيمة <code>true</code> ان كان [[Ruby/IO|مجرى د/خ]] مغلقًا | ||
===[[Ruby/IO/codepoints| codepoints]]=== | ===[[Ruby/IO/codepoints|codepoints]]=== | ||
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each codepoint|each_codepoint]]</code>. | مرادف مُتجاوز للتابع <code>[[Ruby/IO/each codepoint|each_codepoint]]</code>. | ||
===[[Ruby/IO/each| each]]=== | ===[[Ruby/IO/each|each]]=== | ||
ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]] | ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/each byte| each_byte]]=== | ===[[Ruby/IO/each byte|each_byte]]=== | ||
يستدعي الكتلة المعطاة على كل بايت (0..255) في [[Ruby/IO|مجرى د/خ]] | يستدعي الكتلة المعطاة على كل بايت (0..255) في [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/each char| each_char]]=== | ===[[Ruby/IO/each char|each_char]]=== | ||
يستدعي الكتلة المعطاة على لكل حرف في [[Ruby/IO|مجرى د/خ]] | يستدعي الكتلة المعطاة على لكل حرف في [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/each codepoint| each_codepoint]]=== | ===[[Ruby/IO/each codepoint|each_codepoint]]=== | ||
ينفذ التابع الكتلة المعطاة، مع تمرير الرمز العددي (Integer ordinal) لكل حرف من الحروف الموجودة في [[Ruby/IO|مجرى د/خ]]، حيث يمرر رمز اليونيكود (codepoint) كوسيط. | ينفذ التابع الكتلة المعطاة، مع تمرير الرمز العددي (Integer ordinal) لكل حرف من الحروف الموجودة في [[Ruby/IO|مجرى د/خ]]، حيث يمرر رمز اليونيكود (codepoint) كوسيط. | ||
===[[Ruby/IO/each line| each_line]]=== | ===[[Ruby/IO/each line|each_line]]=== | ||
ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]] | ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/eof| eof]]=== | ===[[Ruby/IO/eof|eof]]=== | ||
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف، | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف، | ||
===[[Ruby/IO/eof-3F| eof?]]=== | ===[[Ruby/IO/eof-3F|eof?]]=== | ||
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف، | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف، | ||
===[[Ruby/IO/external encoding| external_encoding]]=== | ===[[Ruby/IO/external encoding|external_encoding]]=== | ||
يُعيد [[Ruby/Encoding|الترميز]] الخاص بالملف. | يُعيد [[Ruby/Encoding|الترميز]] الخاص بالملف. | ||
===[[Ruby/IO/fcntl| fcntl]]=== | ===[[Ruby/IO/fcntl|fcntl]]=== | ||
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في [[Ruby/IO|مجاري د/خ]] | يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في [[Ruby/IO|مجاري د/خ]] | ||
===[[Ruby/IO/fdatasync| fdatasync]]=== | ===[[Ruby/IO/fdatasync|fdatasync]]=== | ||
يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص. | يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص. | ||
===[[Ruby/IO/fileno| fileno]]=== | ===[[Ruby/IO/fileno|fileno]]=== | ||
يُعيد عددا صحيحا يمثل واصف الملف الرقمي ل[[Ruby/IO|مجرى د/خ]] | يُعيد عددا صحيحا يمثل واصف الملف الرقمي ل[[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/flush| flush]]=== | ===[[Ruby/IO/flush|flush]]=== | ||
ينقل (Flushes) أي بيانات مخزنة في [[Ruby/IO|مجرى د/خ]] إلى نظام التشغيل | ينقل (Flushes) أي بيانات مخزنة في [[Ruby/IO|مجرى د/خ]] إلى نظام التشغيل | ||
===[[Ruby/IO/fsync| fsync]]=== | ===[[Ruby/IO/fsync|fsync]]=== | ||
يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص. | يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص. | ||
===[[Ruby/IO/getbyte| getbyte]]=== | ===[[Ruby/IO/getbyte|getbyte]]=== | ||
يحصل على البايت (0..255) التالي من <nowiki/>[[Ruby/IO|مجرى د/خ]] . ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف. | يحصل على البايت (0..255) التالي من <nowiki/>[[Ruby/IO|مجرى د/خ]] . ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف. | ||
===[[Ruby/IO/getc| getc]]=== | ===[[Ruby/IO/getc|getc]]=== | ||
يقرأ [[Ruby/String|سلسلة نصية]] مُؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف. | يقرأ [[Ruby/String|سلسلة نصية]] مُؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف. | ||
===[[Ruby/IO/gets| gets]]=== | ===[[Ruby/IO/gets|gets]]=== | ||
يقرأ "السطر" الموالي من [[Ruby/IO|مجرى د/خ]]. | يقرأ "السطر" الموالي من [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/inspect| inspect]]=== | ===[[Ruby/IO/inspect|inspect]]=== | ||
يُعيد [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | يُعيد [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/internal encoding| internal_encoding]]=== | ===[[Ruby/IO/internal encoding|internal_encoding]]=== | ||
يعيد [[Ruby/Encoding|الترميز]] الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حالة تحديد التحويل. | يعيد [[Ruby/Encoding|الترميز]] الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حالة تحديد التحويل. | ||
===[[Ruby/IO/ioctl| ioctl]]=== | ===[[Ruby/IO/ioctl|ioctl]]=== | ||
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة [[Ruby/IO|مجاري د/خ]] | يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة [[Ruby/IO|مجاري د/خ]] | ||
===[[Ruby/IO/isatty| isatty]]=== | ===[[Ruby/IO/isatty|isatty]]=== | ||
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] مربوطا بجهاز طرفي (tty)، أو يعيد <code>false</code> خلاف ذلك. | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] مربوطا بجهاز طرفي (tty)، أو يعيد <code>false</code> خلاف ذلك. | ||
===[[Ruby/IO/lineno| lineno]]=== | ===[[Ruby/IO/lineno|lineno]]=== | ||
يعيد رقم السطر الحالي في [[Ruby/IO|مجرى د/خ]]. | يعيد رقم السطر الحالي في [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/lineno-3D| lineno=]]=== | ===[[Ruby/IO/lineno-3D|lineno=]]=== | ||
يعيّن يدويًا رقم السطر الحالي ويعطيه القيمة المحددة. | يعيّن يدويًا رقم السطر الحالي ويعطيه القيمة المحددة. | ||
===[[Ruby/IO/lines| lines]]=== | ===[[Ruby/IO/lines|lines]]=== | ||
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each line|each_line]]</code>. | مرادف مُتجاوز للتابع <code>[[Ruby/IO/each line|each_line]]</code>. | ||
===[[Ruby/IO/pid| pid]]=== | ===[[Ruby/IO/pid|pid]]=== | ||
يُعيد معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة ب[[Ruby/IO|مجرى د/خ]]. | يُعيد معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة ب[[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/pos| pos]]=== | ===[[Ruby/IO/pos|pos]]=== | ||
يُعيد الإزاحة (offset) الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]]. | يُعيد الإزاحة (offset) الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/pos-3D| pos=]]=== | ===[[Ruby/IO/pos-3D|pos=]]=== | ||
يسعى إلى التموضع عند الإزاحة المحددة (بالبايت) في [[Ruby/IO|مجرى د/خ]] | يسعى إلى التموضع عند الإزاحة المحددة (بالبايت) في [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/pread| pread]]=== | ===[[Ruby/IO/pread|pread]]=== | ||
يقرأ <code>maxlen</code> بايت من [[Ruby/IO|مجرى د/خ]] | يقرأ <code>maxlen</code> بايت من [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/print| print]]=== | ===[[Ruby/IO/print|print]]=== | ||
يكتب الكائن(ات) المعطاة في [[Ruby/IO|مجرى د/خ]]. ثم يُعيد <code>nil</code>. | يكتب الكائن(ات) المعطاة في [[Ruby/IO|مجرى د/خ]]. ثم يُعيد <code>nil</code>. | ||
===[[Ruby/IO/printf| printf]]=== | ===[[Ruby/IO/printf|printf]]=== | ||
ينسق ويكتب في [[Ruby/IO|مجرى د/خ]]، | ينسق ويكتب في [[Ruby/IO|مجرى د/خ]]، | ||
===[[Ruby/IO/putc| putc]]=== | ===[[Ruby/IO/putc|putc]]=== | ||
إن كان الوسيط المعطى <code>obj</code> <nowiki/>[[Ruby/Numeric|عددًا]]، فسيكتب التابع <code>putc</code> الحرف الذي رمزه هو البايت الأقل دلالة (least-significant byte) في<code>obj</code>. أما إن كان <code>obj</code> سلسلة نصية، فسيكتب أول حرف من <code>obj</code> في <nowiki/>[[Ruby/IO|مجرى د/خ]]. خلاف ذلك، سيُطلق الاستثناء <code>TypeError</code>. | إن كان الوسيط المعطى <code>obj</code> <nowiki/>[[Ruby/Numeric|عددًا]]، فسيكتب التابع <code>putc</code> الحرف الذي رمزه هو البايت الأقل دلالة (least-significant byte) في<code>obj</code>. أما إن كان <code>obj</code> سلسلة نصية، فسيكتب أول حرف من <code>obj</code> في <nowiki/>[[Ruby/IO|مجرى د/خ]]. خلاف ذلك، سيُطلق الاستثناء <code>TypeError</code>. | ||
===[[Ruby/IO/puts| puts]]=== | ===[[Ruby/IO/puts|puts]]=== | ||
يكتب الكائن(اات) المعطاة في [[Ruby/IO|مجرى د/خ]]. | يكتب الكائن(اات) المعطاة في [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/pwrite| pwrite]]=== | ===[[Ruby/IO/pwrite|pwrite]]=== | ||
يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] عند موضع الإزاحة المعطى. | يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] عند موضع الإزاحة المعطى. | ||
===[[Ruby/IO/read-i| read]]=== | ===[[Ruby/IO/read-i|read]]=== | ||
يقرأ عددا من البايتات من [[Ruby/IO|مجرى د/خ]]. | يقرأ عددا من البايتات من [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/read nonblock| read_nonblock]]=== | ===[[Ruby/IO/read nonblock|read_nonblock]]=== | ||
يقرأ على الأكثر <code>maxlen</code> بايتًا من [[Ruby/IO|مجرى د/خ]]. | يقرأ على الأكثر <code>maxlen</code> بايتًا من [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/readbyte| readbyte]]=== | ===[[Ruby/IO/readbyte|readbyte]]=== | ||
يقرأ البايت كما يفعل التابع <code>getbyte</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | يقرأ البايت كما يفعل التابع <code>getbyte</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | ||
===[[Ruby/IO/readchar| readchar]]=== | ===[[Ruby/IO/readchar|readchar]]=== | ||
يقرأ [[Ruby/String|سلسلة نصية]] مؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | يقرأ [[Ruby/String|سلسلة نصية]] مؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | ||
===[[Ruby/IO/readline| readline]]=== | ===[[Ruby/IO/readline|readline]]=== | ||
يقرأ سطرًا كما يفعل التابع <code>gets</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | يقرأ سطرًا كما يفعل التابع <code>gets</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | ||
===[[Ruby/IO/readlines-i| readlines]]=== | ===[[Ruby/IO/readlines-i|readlines]]=== | ||
يقرأ كل الأسطر الموجودة في [[Ruby/IO|مجرى د/خ]]، ثم يعيدها في [[Ruby/Array|مصفوفة]]. | يقرأ كل الأسطر الموجودة في [[Ruby/IO|مجرى د/خ]]، ثم يعيدها في [[Ruby/Array|مصفوفة]]. | ||
===[[Ruby/IO/readpartial| readpartial]]=== | ===[[Ruby/IO/readpartial|readpartial]]=== | ||
يقرأ <code>maxlen</code>بايتًا على الأكثر من [[Ruby/IO|مجرى د/خ]]. | يقرأ <code>maxlen</code>بايتًا على الأكثر من [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/reopen| reopen]]=== | ===[[Ruby/IO/reopen|reopen]]=== | ||
يربط بين [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه وبين [[Ruby/IO|مجرى د/خ]] المعطى. | يربط بين [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه وبين [[Ruby/IO|مجرى د/خ]] المعطى. | ||
===[[Ruby/IO/rewind| rewind]]=== | ===[[Ruby/IO/rewind|rewind]]=== | ||
يُموضِع [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه عند بداية الإدخال، مع تعيين <code>[[Ruby/IO/lineno|lineno]]</code> عند القيمة صفر. | يُموضِع [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه عند بداية الإدخال، مع تعيين <code>[[Ruby/IO/lineno|lineno]]</code> عند القيمة صفر. | ||
===[[Ruby/IO/seek| seek]]=== | ===[[Ruby/IO/seek|seek]]=== | ||
يسعى إلى التموضع عند الإزاحة المعطاة <code>anInteger</code> في [[Ruby/IO|مجرى د/خ]] | يسعى إلى التموضع عند الإزاحة المعطاة <code>anInteger</code> في [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/set encoding| set_encoding]]=== | ===[[Ruby/IO/set encoding|set_encoding]]=== | ||
في حال تمرير وسيط واحد، فستوسم السلسلة النصية المقروءة من <nowiki/>[[Ruby/IO|مجرى د/خ]] <nowiki/>[[Ruby/Encoding|بالترميز]] المحدد. | في حال تمرير وسيط واحد، فستوسم السلسلة النصية المقروءة من <nowiki/>[[Ruby/IO|مجرى د/خ]] <nowiki/>[[Ruby/Encoding|بالترميز]] المحدد. | ||
===[[Ruby/IO/stat| stat]]=== | ===[[Ruby/IO/stat|stat]]=== | ||
يُعيد معلومات الحالة ل[[Ruby/IO|مجرى د/خ]] الذي استُدعي معه على هيئة كائن من النوع <code>File::Stat</code>. | يُعيد معلومات الحالة ل[[Ruby/IO|مجرى د/خ]] الذي استُدعي معه على هيئة كائن من النوع <code>File::Stat</code>. | ||
===[[Ruby/IO/sync| sync]]=== | ===[[Ruby/IO/sync|sync]]=== | ||
يُعيد قيمة راية وضع المزامنة "sync mode" الحالية ل[[Ruby/IO|مجرى د/خ]]. | يُعيد قيمة راية وضع المزامنة "sync mode" الحالية ل[[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/sync-3D| sync=]]=== | ===[[Ruby/IO/sync-3D|sync=]]=== | ||
يضبط قيمة راية وضع المزامنة “sync mode' عند إحدى القيمتين <code>true</code> أو <code>false</code>. | يضبط قيمة راية وضع المزامنة “sync mode' عند إحدى القيمتين <code>true</code> أو <code>false</code>. | ||
===[[Ruby/IO/sysread| sysread]]=== | ===[[Ruby/IO/sysread|sysread]]=== | ||
يقرأ عددا من البايتات من [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | يقرأ عددا من البايتات من [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/sysseek| sysseek]]=== | ===[[Ruby/IO/sysseek|sysseek]]=== | ||
يسعى إلى التموضع عند الإزاحة المعطاة. | يسعى إلى التموضع عند الإزاحة المعطاة. | ||
===[[Ruby/IO/syswrite| syswrite]]=== | ===[[Ruby/IO/syswrite|syswrite]]=== | ||
يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/tell| tell]]=== | ===[[Ruby/IO/tell|tell]]=== | ||
يُعيد الإزاحة الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]]. | يُعيد الإزاحة الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/to i| to_i]]=== | ===[[Ruby/IO/to i|to_i]]=== | ||
مرادف للتابع <code>[[Ruby/IO/fileno|fileno]]</code>. | مرادف للتابع <code>[[Ruby/IO/fileno|fileno]]</code>. | ||
===[[Ruby/IO/to io| to_io]]=== | ===[[Ruby/IO/to io|to_io]]=== | ||
يعيد [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | يعيد [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/tty-3F| tty?]]=== | ===[[Ruby/IO/tty-3F|tty?]]=== | ||
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] مربوطا بطرفية (tty)، أو يعيد <code>false</code> خلاف ذلك. | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] مربوطا بطرفية (tty)، أو يعيد <code>false</code> خلاف ذلك. | ||
===[[Ruby/IO/ungetbyte| ungetbyte]]=== | ===[[Ruby/IO/ungetbyte|ungetbyte]]=== | ||
يدفع (Pushes back) البايتات (التي تم تمريرها كوسيط) إلى [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | يدفع (Pushes back) البايتات (التي تم تمريرها كوسيط) إلى [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/ungetc| ungetc]]=== | ===[[Ruby/IO/ungetc|ungetc]]=== | ||
يدفع حرفا واحدا (المُمرر كوسيط) في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | يدفع حرفا واحدا (المُمرر كوسيط) في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/write-i| write]]=== | ===[[Ruby/IO/write-i|write]]=== | ||
يكتب [[Ruby/String|السلاسل النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]]. | يكتب [[Ruby/String|السلاسل النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/write nonblock| write_nonblock]]=== | ===[[Ruby/IO/write nonblock|write_nonblock]]=== | ||
يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]]. | يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]]. | ||
==مصادر== | ==مصادر== | ||
*[http://ruby-doc.org/core-2.5.1/IO.html قسم | *[http://ruby-doc.org/core-2.5.1/IO.html قسم الصنف IO في توثيق روبي الرسمي.] |
مراجعة 14:05، 19 ديسمبر 2018
الصنف IO
هو أساس كل عمليات الإدخال والإخراج في روبي. مجرى الدخل/الخرج (I/O stream) قد يكون مزدوج الاتجاه (duplexed، أي في اتجاهين)، وبذلك قد يُستخدَم أكثر من مجرى واحد من مجاري نظام التشغيل.
الكثير من الأمثلة الواردة في في هذا القسم تستخدم الصنف File
، وهو االصنف الفرعي (subclass) القياسي الوحيد للصنف IO
، إذ يرتبط الصنفان ارتباطًا وثيقًا.
مثل الصنف File
، فإنّ المكتبة Socket تشتق أصنافًا فرعيةً من الصنف IO
(مثل TCPSocket
أو UDPSocket
).
يمكن أن ينشئ التابع Kernel.open
كائنات من الصنف IO
(أو File
) من أنواع الوسائط التالية:
- سلسلة نصية لتمثيل اسم ملف مناسب لنظام التشغيل المستخدم.
- سلسلة نصية تبدأ بالمحرف
"|"
كناية عن عملية فرعية (subprocess). يتم استدعاء الجزء الذي يلي المحرف"|"
من السلسلة النصية كعملية (process)؛ هذه العملية ستكون متصلة بقنوات الدخل/الخرج (د/خ) المناسبة. - إن كانت السلسلة النصية تساوي
"|-"
، فسيتم إنشاء نسخة (instance) أخرى من روبي كعملية فرعية.
يمكن فتح مجرى د/خ (IO
) مع مختلف أوضاع الملفات (مثل وضع القراءة فقط [read-only] أو الكتابة فقط [write-only]) ووفق الترميزات المناسبة لأجل إجراء عمليات التحويل. انظر صفحة التابع new
للتعرف على هذه الخيارات، وانظر صفحة Kernel.open
لمزيد من التفاصيل حول مختلف تنسيقات الأوامر المذكورة أعلاه.
يمكن أيضًا استخدام التابع popen
أو المكتبة Open3
أو التابع Process.spawn
للتواصل مع العمليات الفرعية عبر مجرى د/خ.
ستُحول روبي أسماء المسارات بما يتوافق مع نظام التشغيل المستخدم إن أمكن. على سبيل المثال، في نظام ويندوز، سيُفتح اسم الملف "/gumby/ruby/test.rb"
باعتباره "\gumby\ruby\test.rb"
.
عند تحديد اسم ملف بنمط ويندوز في سلسلة نصية، تذكر أن تهرِّب (escape) الخطوط المائلة العكسية مثل:
"C:\\gumby\\ruby\\test.rb"
سوف نستخدم في الأمثلة الموجودة في صفحات التوابع الخطوط المائلة للأمام على نمط اليونيكس؛ يمكن الحصول على المحرف الفاصل للمجلدات في المسارات الخاص بنظام التشغيل عبر الثابت File::ALT_SEPARATOR
.
يوفر الثابت العام ARGF
(يمكن الوصول إليه عبر $<
) مجرًى مشابهًا لمجرى د/خ (I/O)، والذي يسمح بالوصول إلى كافة الملفات المذكورة في سطر الأوامر (أو في المجرى STDIN
في حال لم يذكر أي ملف). يمكن استخدام التابع ARGF.path
وبديله ARGF.filename
للوصول إلى اسم الملف الذي تتم قراءته حاليًا.
الملحقة io/console
توفر الملحقة io/console توابع للتفاعل مع وحدة التحكم (console). يمكن الوصول إلى وحدة التحكم (أو الطرفية) عبر التابع IO.console
، أو من مجاري الدخل والخرج القياسية التي هي input
و output
و error
.
استيراد io/console يؤدي إلى إضافة التوابع التالية:
IO::console
IO#raw
IO#raw!
IO#cooked
IO#cooked!
IO#getch
IO#echo=
IO#echo?
IO#noecho
IO#winsize
IO#winsize=
IO#iflush
IO#ioflush
IO#oflush
إليك المثال التالي حول استدعاء الملحقة io/console وإضافتها لاستعمال التابع winsize
:
require 'io/console'
rows, columns = $stdout.winsize
puts "Your screen is #{columns} wide and #{rows} tall"
الثوابت
EWOULDBLOCKWaitReadable
اطلع على صفحة الصنف IO::EAGAINWaitReadable
.
EWOULDBLOCKWaitWritable
اطلع على صفحة الصنف IO::EAGAINWaitWritable
.
SEEK_CUR
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من الموضع الحالي له.
SEEK_DATA
يضبط موضع مؤشِّر عملية الدخل والخرج إلى الموقع التالي الذي يحتوي على البيانات.
SEEK_END
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من النهاية.
SEEK_HOLE
يضبط موضع مؤشِّر عملية الدخل والخرج إلى الفجوة التالية.
SEEK_SET
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من البداية.
توابع الصنف العامة
binread
يفتح الملف ثم يحرِّك موضع المؤشر بمقدار محدد (في حال إعطائه) ثم يجلب جميع محتوى الملف بدءًا من موضع المؤشر وحتى نهاية الملف أو يجلب حجم محدَّد من البيانات.
binwrite
يشبه التابع write
باستثناء أنه يفتح الملف في الوضع الثنائي (binary mode) وبالترميز ASCII-8BIT.
copy_stream
ينسخ بيانات من مجرى إلى مجرى آخر.
for_fd
يعد مرادفًا للتابع new
.
foreach
ينفذ الكتلة المعطاة على كل سطر في منفذ مجرى د/خ المسمى.
new
ينشئ كائنًا جديدًا من النوع IO
.
open
يشبه التابعَ new
تمامًا عند استدعائه دون كتلة، أو يُمرّر الكائن IO
الذي جرى إنشاؤه كوسيط إلى الكتلة المعطاة ثم يعيد الناتج الذي تعيده الكتلة.
pipe
ينشئ زوجًا من طرفي أنبوب (pipe endpoints) متصلين ببعضهما بعضًا ثم يعيدهما على هيئة مصفوفة من الكائنات IO
.
popen
ينفذ الأمر المعطى كعملية فرعية (subprocess) مع توصيل المجرَيَين القياسيين للدخل والخرج للعملية الفرعية مع المجرى IO
المُعاد.
read
يفتح الملف، ثم يتموضع اختياريا عند الموضع المعطى
readlines
يقرأ كامل الملف المحدد
select
يستدعي select(2)
. ويقوم بمراقبة المصفوفة المعطاة المكونة من مجاري د/خ (كائنات IO
)، وينتظر حتى يكون أحدها جاهزًا للقراءة، وجاهزا للكتابة، ويكون لها استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد مصفوفة تحتوي على مصفوفات مكونة من مجاري د/خ
sysopen
يفتح المسار المحدد، ثم يعيد واصف الملف الأساسي كعدد صحيح.
try_convert
يحاول تحويل الوسيط المعطى إلى مجرى د/خ
write
يفتح الملف، ويتموضع اختياريا عند الإزاحة offset
المعطاة
توابع النسخة العامة (Public Instance Methods)
<<
مجرى الإخراج النصي
advise
يعلن عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد.
autoclose=
يُعيّن قيمة راية الإغلاق التلقائي.
autoclose?
يُعيد القيمة true
إن كان واصف الملف الأساسي لمجرى د/خ سيُغله تلقائياً عند الانتهاء منه، وإلا سيُعيد false
.
binmode
يضع مجرى د/خ في الوضع الثنائي (binary mode).
binmode?
يُعيد القيمة true
إن كان مجرى د/خ في الوضع الثنائي (binary mode).
bytes
مرادف مُتجاوز للتابع each_byte
.
chars
مرادف مُتجاوز للتابع each_char
.
close
يغلق مجرى د/خ، وينقل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل.
close_on_exec=
يعين الراية close-on-exec.
close_on_exec?
يُعيد القيمة true
إن كانت الراية close_on_exec الخاصة بمجرى د/خ تساوي true
.
close_read
يغلق طرف القراءة الخاص بمجرى مجرى د/خ
close_write
يغلق طرف الكتابة الخاص بمجرى د/خ
closed?
يعيد القيمة true
ان كان مجرى د/خ مغلقًا
codepoints
مرادف مُتجاوز للتابع each_codepoint
.
each
ينفذ الكتلة المعطاة على كل سطر في مجرى د/خ
each_byte
يستدعي الكتلة المعطاة على كل بايت (0..255) في مجرى د/خ
each_char
يستدعي الكتلة المعطاة على لكل حرف في مجرى د/خ
each_codepoint
ينفذ التابع الكتلة المعطاة، مع تمرير الرمز العددي (Integer ordinal) لكل حرف من الحروف الموجودة في مجرى د/خ، حيث يمرر رمز اليونيكود (codepoint) كوسيط.
each_line
ينفذ الكتلة المعطاة على كل سطر في مجرى د/خ
eof
يُعيد القيمة true
إن كان مجرى د/خ في نهاية الملف،
eof?
يُعيد القيمة true
إن كان مجرى د/خ في نهاية الملف،
external_encoding
يُعيد الترميز الخاص بالملف.
fcntl
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في مجاري د/خ
fdatasync
يكتب على الفور جميع البيانات المخزنة في مجرى د/خ على القرص.
fileno
يُعيد عددا صحيحا يمثل واصف الملف الرقمي لمجرى د/خ
flush
ينقل (Flushes) أي بيانات مخزنة في مجرى د/خ إلى نظام التشغيل
fsync
يكتب على الفور جميع البيانات المخزنة في مجرى د/خ على القرص.
getbyte
يحصل على البايت (0..255) التالي من مجرى د/خ . ويُعيد nil
إن استُدعي عند نهاية الملف.
getc
يقرأ سلسلة نصية مُؤلفة من حرف واحد من مجرى د/خ. ويُعيد nil
إن استُدعي عند نهاية الملف.
gets
يقرأ "السطر" الموالي من مجرى د/خ.
inspect
يُعيد سلسلة نصية تصف مجرى د/خ الذي استُدعي معه.
internal_encoding
يعيد الترميز الخاص بالسلسلة النصية الداخلية في حالة تحديد التحويل.
ioctl
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة مجاري د/خ
isatty
يُعيد القيمة true
إن كان مجرى د/خ مربوطا بجهاز طرفي (tty)، أو يعيد false
خلاف ذلك.
lineno
يعيد رقم السطر الحالي في مجرى د/خ.
lineno=
يعيّن يدويًا رقم السطر الحالي ويعطيه القيمة المحددة.
lines
مرادف مُتجاوز للتابع each_line
.
pid
يُعيد معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة بمجرى د/خ.
pos
يُعيد الإزاحة (offset) الحالية (بالبايت) في مجرى د/خ.
pos=
يسعى إلى التموضع عند الإزاحة المحددة (بالبايت) في مجرى د/خ
pread
يقرأ maxlen
بايت من مجرى د/خ
يكتب الكائن(ات) المعطاة في مجرى د/خ. ثم يُعيد nil
.
printf
ينسق ويكتب في مجرى د/خ،
putc
إن كان الوسيط المعطى obj
عددًا، فسيكتب التابع putc
الحرف الذي رمزه هو البايت الأقل دلالة (least-significant byte) فيobj
. أما إن كان obj
سلسلة نصية، فسيكتب أول حرف من obj
في مجرى د/خ. خلاف ذلك، سيُطلق الاستثناء TypeError
.
puts
يكتب الكائن(اات) المعطاة في مجرى د/خ.
pwrite
يكتب السلسلة النصية المعطاة في مجرى د/خ عند موضع الإزاحة المعطى.
read
يقرأ عددا من البايتات من مجرى د/خ.
read_nonblock
يقرأ على الأكثر maxlen
بايتًا من مجرى د/خ.
readbyte
يقرأ البايت كما يفعل التابع getbyte
، إلا أنه يُطلق الاستثناء EOFError
عند نهاية الملف.
readchar
يقرأ سلسلة نصية مؤلفة من حرف واحد من مجرى د/خ. ويطلق الاستثناء EOFError
عند نهاية الملف.
readline
يقرأ سطرًا كما يفعل التابع gets
، إلا أنه يُطلق الاستثناء EOFError
عند نهاية الملف.
readlines
يقرأ كل الأسطر الموجودة في مجرى د/خ، ثم يعيدها في مصفوفة.
readpartial
يقرأ maxlen
بايتًا على الأكثر من مجرى د/خ.
reopen
يربط بين مجرى د/خ الذي استُدعي معه وبين مجرى د/خ المعطى.
rewind
يُموضِع مجرى د/خ الذي استُدعي معه عند بداية الإدخال، مع تعيين lineno
عند القيمة صفر.
seek
يسعى إلى التموضع عند الإزاحة المعطاة anInteger
في مجرى د/خ
set_encoding
في حال تمرير وسيط واحد، فستوسم السلسلة النصية المقروءة من مجرى د/خ بالترميز المحدد.
stat
يُعيد معلومات الحالة لمجرى د/خ الذي استُدعي معه على هيئة كائن من النوع File::Stat
.
sync
يُعيد قيمة راية وضع المزامنة "sync mode" الحالية لمجرى د/خ.
sync=
يضبط قيمة راية وضع المزامنة “sync mode' عند إحدى القيمتين true
أو false
.
sysread
يقرأ عددا من البايتات من مجرى د/خ الذي استُدعي معه.
sysseek
يسعى إلى التموضع عند الإزاحة المعطاة.
syswrite
يكتب السلسلة النصية المعطاة في مجرى د/خ الذي استُدعي معه.
tell
يُعيد الإزاحة الحالية (بالبايت) في مجرى د/خ.
to_i
مرادف للتابع fileno
.
to_io
يعيد مجرى د/خ الذي استُدعي معه.
tty?
يُعيد القيمة true
إن كان مجرى د/خ مربوطا بطرفية (tty)، أو يعيد false
خلاف ذلك.
ungetbyte
يدفع (Pushes back) البايتات (التي تم تمريرها كوسيط) إلى مجرى د/خ الذي استُدعي معه.
ungetc
يدفع حرفا واحدا (المُمرر كوسيط) في مجرى د/خ الذي استُدعي معه.
write
يكتب السلاسل النصية المعطاة في مجرى د/خ.
write_nonblock
يكتب السلسلة النصية المعطاة في مجرى د/خ.