الفرق بين المراجعتين ل"Ruby/IO"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 85: سطر 85:
 
ينشئ زوجًا من طرفي أنبوب (pipe endpoints) متصلين ببعضهما بعضًا ثم يعيدهما على هيئة [[Ruby/Array|مصفوفة]] من الكائنات <code>IO</code>.
 
ينشئ زوجًا من طرفي أنبوب (pipe endpoints) متصلين ببعضهما بعضًا ثم يعيدهما على هيئة [[Ruby/Array|مصفوفة]] من الكائنات <code>IO</code>.
 
===[[Ruby/IO/popen|<code>popen</code>]]===
 
===[[Ruby/IO/popen|<code>popen</code>]]===
ينفذ الأمر المعطى كعملية فرعية (subprocess) مع توصيل المجرَيَين القياسيين للدخل والخرج للعملية الفرعية مع المجرى <nowiki/>[[Ruby/IO|<code>IO</code>]] المُعاد.
+
ينفذ الأمر المعطى كعملية فرعية (subprocess) مع توصيل المجرَيَين القياسيين للدخل والخرج للعملية الفرعية مع المجرى <nowiki/><code>IO</code> المُعاد.
===[[Ruby/IO/read|read]]===
+
===[[Ruby/IO/read|<code>read</code>]]===
يفتح  الملف، ثم يتموضع اختياريا عند الموضع المعطى
+
يقرأ ملفًا محددًا بعد فتحه ثم يغلقه قبل إعادة الناتج.
===[[Ruby/IO/readlines|readlines]]===
+
===[[Ruby/IO/readlines|<code>readlines</code>]]===
يقرأ كامل الملف المحدد
+
يقرأ ملفًا بأكمله سطرًا سطرًا ثم يعيد تلك الأسطر في [[Ruby/Array|مصفوفة]].
===[[Ruby/IO/select|select]]===
+
===[[Ruby/IO/select|<code>select</code>]]===
يستدعي <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|المصفوفة]] المعطاة المكونة من مجاري د/خ (كائنات <code>IO</code>)، وينتظر حتى يكون واحد أو أكثر من تلك المجاري جاهزًا للقراءة، وجاهزًا للكتابة، ويكون له استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد [[Ruby/Array|مصفوفة]] مؤلفة من [[Ruby/Array|مصفوفات]] مكونة من تلك المجاري.
===[[Ruby/IO/sysopen|sysopen]]===
+
===[[Ruby/IO/sysopen|<code>sysopen</code>]]===
يفتح المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]].
+
يفتح الملف الموجود في المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]].
===[[Ruby/IO/try convert|try_convert]]===
+
===[[Ruby/IO/try convert|<code>try_convert</code>]]===
يحاول تحويل الوسيط المعطى إلى [[Ruby/IO|مجرى د/خ]]
+
يحاول تحويل الكائن المُمرَّر إليه إلى مجرى د/خ باستخدام التابع <code>[[Ruby/IO/to io|to_io]]</code>.
===[[Ruby/IO/write|write]]===
+
===[[Ruby/IO/write|<code>write</code>]]===
يفتح الملف، ويتموضع اختياريا عند الإزاحة <code>offset</code> المعطاة
+
يفتح ملفًا محدَّدًا ويكتب فيه السلسلة النصية المُمرَّرة إليه ثم يغلقه ويعيد عدد البايتات التي كتبها. 
  
 
== توابع النسخة العامة (Public Instance Methods) ==
 
== توابع النسخة العامة (Public Instance Methods) ==
  
===‎[[Ruby/IO/left shift| <<‎]]===
+
===‎[[Ruby/IO/left shift|<code><<‎</code>]]===
مجرى الإخراج النصي
+
يكتب كائنًا في المجرى <code>IO</code> المعطى.
===[[Ruby/IO/advise|advise]]===
+
===[[Ruby/IO/advise|<code>advise</code>]]===
يعلن عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد.
+
يعلن عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد.
===[[Ruby/IO/autoclose-3D|autoclose=]]===
+
===[[Ruby/IO/autoclose-3D|<code>autoclose</code>]]===
يُعيّن قيمة راية الإغلاق التلقائي.
+
يُعيّن عند استدعائه بالشكل <code>autoclose = bool</code> قيمة راية الإغلاق التلقائي (auto-close flag) إلى القيمة <code>bool</code> المنطقية.
===[[Ruby/IO/autoclose-3F|autoclose?‎]]===
+
===[[Ruby/IO/autoclose-3F|<code>autoclose?‎</code>]]===
يُعيد  القيمة <code>true</code> إن كان واصف الملف الأساسي ل[[Ruby/IO|مجرى د/خ]] سيُغله تلقائياً عند الانتهاء منه، وإلا سيُعيد <code>false</code>.
+
يتحقق إن كان واصف الملف الأساسي لمجرى معين سيُغلق تلقائيًا عند الانتهاء منه.
===[[Ruby/IO/binmode|binmode]]===
+
===[[Ruby/IO/binmode|<code>binmode</code>]]===
يضع  [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode).
+
يجعل مجرى د/خ في الوضع الثنائي (binary mode).
===[[Ruby/IO/binmode-3F|binmode?‎]]===
+
===[[Ruby/IO/binmode-3F|<code>binmode?‎</code>]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode).
+
يتحقق إن كان [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode).
===[[Ruby/IO/bytes|bytes]]===
+
===[[Ruby/IO/bytes|<code>bytes</code>]]===
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each byte|each_byte]]</code>.
+
يعد اسمًا بديلًا مهملًا للتابع <code>[[Ruby/IO/each byte|each_byte]]</code>.
  
===[[Ruby/IO/chars|chars]]===
+
===[[Ruby/IO/chars|<code>chars</code>]]===
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each char|each_char]]</code>.
+
يعد اسمًا بديلًا مهملًا للتابع <code>[[Ruby/IO/each char|each_char]]</code>.
  
===[[Ruby/IO/close|close]]===
+
===[[Ruby/IO/close|<code>close</code>]]===
يغلق [[Ruby/IO|مجرى د/خ]]، وينقل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل.
+
يغلق المجرى الذي استدعي معه ويرسل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل.
===[[Ruby/IO/close on exec-3D|close_on_exec=‎]]===
+
===[[Ruby/IO/close on exec-3D|<code>close_on_exec‎</code>]]===
يعين الراية close-on-exec.
+
يعين عند استدعائه بالشكل <code>close_on_exec = bool</code> قيمة الراية <code>close-on-exec</code> إلى القيمة <code>bool</code>.
===[[Ruby/IO/close on exec-3F|close_on_exec?‎]]===
+
===[[Ruby/IO/close on exec-3F|<code>close_on_exec?‎</code>]]===
يُعيد  القيمة <code>true</code> إن كانت الراية close_on_exec الخاصة ب[[Ruby/IO|مجرى د/خ]] تساوي <code>true</code>.
+
يتحقق إن كانت الراية <code>close-on-exec</code> الخاصة ب[[Ruby/IO|المجرى]] الذي استدعي معه مضبوطة إلى القيمة <code>true</code>.
===[[Ruby/IO/close read|close_read]]===
+
===[[Ruby/IO/close read|<code>close_read</code>]]===
يغلق طرف القراءة الخاص بمجرى [[Ruby/IO|مجرى د/خ]]
+
يغلق طرف القراءة الخاص بمجرى د/خ مزدوج (duplex).
===[[Ruby/IO/close write|close_write]]===
+
===[[Ruby/IO/close write|<code>close_write</code>]]===
يغلق طرف الكتابة الخاص ب[[Ruby/IO|مجرى د/خ]]
+
يغلق طرف الكتابة الخاص بمجرى د/خ مزدوج (duplex).
===[[Ruby/IO/closed-3F|closed?‎]]===
+
===[[Ruby/IO/closed-3F|<code>closed?‎</code>]]===
يعيد  القيمة <code>true</code> ان كان [[Ruby/IO|مجرى د/خ]] مغلقًا
+
يتحقق إن كان مجرى د/خ مغلقًا تمامًا.
===[[Ruby/IO/codepoints|codepoints]]===
+
===[[Ruby/IO/codepoints|<code>codepoints</code>]]===
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each codepoint|each_codepoint]]</code>.
+
يعدُّ اسمًا بديلًا مهملًا للتابع <code>[[Ruby/IO/each codepoint|each_codepoint]]</code>.
===[[Ruby/IO/each|each]]===
+
===[[Ruby/IO/each|<code>each</code>]]===
ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]]
+
ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|المجرى]] الذي استُدعي معه.
===[[Ruby/IO/each byte|each_byte]]===
+
===[[Ruby/IO/each byte|<code>each_byte</code>]]===
يستدعي الكتلة المعطاة على كل بايت (0..255) في [[Ruby/IO|مجرى د/خ]]
+
يستدعي الكتلة المعطاة على كل بايت (0..255) في [[Ruby/IO|المجرى]] الذي استدعي معه. 
===[[Ruby/IO/each char|each_char]]===
+
===[[Ruby/IO/each char|<code>each_char</code>]]===
يستدعي الكتلة المعطاة على لكل حرف في [[Ruby/IO|مجرى د/خ]]
+
يستدعي الكتلة المعطاة على كل محرف في [[Ruby/IO|المجرى]] الذي استدعي معه. 
===[[Ruby/IO/each codepoint|each_codepoint]]===
+
===[[Ruby/IO/each codepoint|<code>each_codepoint</code>]]===
ينفذ التابع الكتلة المعطاة، مع تمرير الرمز العددي (Integer ordinal) لكل حرف من الحروف الموجودة في [[Ruby/IO|مجرى د/خ]]، حيث يمرر رمز اليونيكود (codepoint) كوسيط. 
+
يمرر كل عدد من الأعداد الترتيبية (Integer ordinal) لكل محرف من المحارف الموجودة في [[Ruby/IO|المجرى]] الذي استدعي معه إلى الكتلة المعطاة.
===[[Ruby/IO/each line|each_line]]===
+
===[[Ruby/IO/each line|<code>each_line</code>]]===
ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]]
+
ينفذ الكتلة المعطاة على كل سطر في المجرى الذي استدعي معه.
===[[Ruby/IO/eof|eof]]===
+
===[[Ruby/IO/eof|<code>eof</code>]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف،
+
يتحقق إن وصل المجرى الذي استدعي معه إلى نهاية الملف.
===[[Ruby/IO/eof-3F|eof?‎]]===
+
===[[Ruby/IO/eof-3F|<code>eof?‎</code>]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف،
+
يتحقق إن وصل المجرى الذي استدعي معه إلى نهاية الملف.
===[[Ruby/IO/external encoding|external_encoding]]===
+
===[[Ruby/IO/external encoding|<code>external_encoding</code>]]===
يُعيد [[Ruby/Encoding|الترميز]] الخاص بالملف.
+
يُعيد الكائن <nowiki/>[[Ruby/Encoding|<code>Encoding</code>]] الذي يمثل ترميز الملف للمجرى الذي استدعي معه. 
===[[Ruby/IO/fcntl|fcntl]]===
+
===[[Ruby/IO/fcntl|<code>fcntl</code>]]===
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في [[Ruby/IO|مجاري د/خ]]
+
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أو الاستعلام عن <nowiki/>[[Ruby/IO|مجاري د/خ]]<nowiki/>الموجهة بالملفات (file-oriented I/O).
===[[Ruby/IO/fdatasync|fdatasync]]===
+
===[[Ruby/IO/fdatasync|<code>fdatasync</code>]]===
يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص.
+
يكتب مباشرةً جميع البيانات المخزنة في مجرى د/خ على القرص.
===[[Ruby/IO/fileno|fileno]]===
+
===[[Ruby/IO/fileno|<code>fileno</code>]]===
يُعيد عددا صحيحا يمثل واصف الملف الرقمي ل[[Ruby/IO|مجرى د/خ]]
+
يُعيد عددًا صحيحًا يمثل واصف الملف الرقمي للمجرى الذي استدعي معه.
===[[Ruby/IO/flush|flush]]===
+
===[[Ruby/IO/flush|<code>flush</code>]]===
ينقل (Flushes)  أي بيانات مخزنة في [[Ruby/IO|مجرى د/خ]]  إلى نظام التشغيل
+
ينقل أي بيانات مخزَّنة في المجرى الذي استدعي معه إلى نظام التشغيل.
===[[Ruby/IO/fsync|fsync]]===
+
===[[Ruby/IO/fsync|<code>fsync</code>]]===
يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص.
+
يكتب مباشرةً جميع البيانات المخزنة في المجرى الذي استدعي معه على القرص.
===[[Ruby/IO/getbyte|getbyte]]===
+
===[[Ruby/IO/getbyte|<code>getbyte</code>]]===
يحصل على البايت (0..255) التالي من <nowiki/>[[Ruby/IO|مجرى د/خ]] . ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف.
+
يجلب البايت التالي من المجرى الذي استدعي معه.
===[[Ruby/IO/getc|getc]]===
+
===[[Ruby/IO/getc|<code>getc</code>]]===
يقرأ  [[Ruby/String|سلسلة نصية]] مُؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف.
+
يجلب محرفًا واحدًا من المجرى الذي استدعي معه.
===[[Ruby/IO/gets|gets]]===
+
===[[Ruby/IO/gets|<code>gets</code>]]===
يقرأ  "السطر" الموالي من [[Ruby/IO|مجرى د/خ]].
+
يجلب السطر التالي من المجرى الذي استدعي معه. 
===[[Ruby/IO/inspect|inspect]]===
+
===[[Ruby/IO/inspect|<code>inspect</code>]]===
يُعيد [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه.
+
يُعيد [[Ruby/String|سلسلة نصية]] تصف المجرى الذي استُدعي معه.
===[[Ruby/IO/internal encoding|internal_encoding]]===
+
===[[Ruby/IO/internal encoding|<code>internal_encoding</code>]]===
يعيد [[Ruby/Encoding|الترميز]] الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حالة تحديد التحويل.
+
يعيد [[Ruby/Encoding|الترميز]] الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حال تحديد التحويل.
===[[Ruby/IO/ioctl|ioctl]]===
+
===[[Ruby/IO/ioctl|<code>ioctl</code>]]===
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة [[Ruby/IO|مجاري د/خ]]
+
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أو الاستعلام عن أجهزة [[Ruby/IO|مجاري د/خ]].  
===[[Ruby/IO/isatty|isatty]]===
+
===[[Ruby/IO/isatty|<code>isatty</code>]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] مربوطا بجهاز طرفي (tty)، أو يعيد <code>false</code> خلاف ذلك.
+
يتحقق إن كان [[Ruby/IO|المجرى]] الذي استدعي معه مربوطًا بجهاز طرفي (tty).
===[[Ruby/IO/lineno|lineno]]===
+
===[[Ruby/IO/lineno|<code>lineno</code>]]===
يعيد رقم السطر الحالي في [[Ruby/IO|مجرى د/خ]].
+
يعيد رقم السطر الحالي في [[Ruby/IO|المجرى]] الذي استدعي معه.  يجب أن يكون المجرى مفتوحًا في وضعية القراءة.
===[[Ruby/IO/lineno-3D|lineno=‎]]===
+
===[[Ruby/IO/lineno-3D|<code>lineno=‎</code>]]===
يعيّن يدويًا رقم السطر الحالي ويعطيه القيمة المحددة.
+
يعيّن عند استدعاءه بالشكل <code>lineno = integer</code> رقم السطر الحالي يدويًا إلى القيمة <code>integer</code>.
===[[Ruby/IO/lines|lines]]===
+
===[[Ruby/IO/lines|<code>lines</code>]]===
 
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each line|each_line]]</code>.
 
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each line|each_line]]</code>.
  
===[[Ruby/IO/pid|pid]]===
+
===[[Ruby/IO/pid|<code>pid</code>]]===
يُعيد  معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة ب[[Ruby/IO|مجرى د/خ]].
+
يعيد معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة ب[[Ruby/IO|المجرى]] الذي استدعي معه.
===[[Ruby/IO/pos|pos]]===
+
===[[Ruby/IO/pos|<code>pos</code>]]===
يُعيد الإزاحة (offset) الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]].
+
يُعيد موضع المؤشر الحالي بدءًا من بداية الملف (بالبايت) [[Ruby/IO|للمجرى]] الذي استدعي معه.
===[[Ruby/IO/pos-3D|pos=‎]]===
+
===[[Ruby/IO/pos-3D|<code>pos=‎</code>]]===
يسعى  إلى التموضع عند الإزاحة المحددة (بالبايت) في [[Ruby/IO|مجرى د/خ]]
+
يحرِّك عند استدعائه بالشكل <code>pos = integer</code> إلى موضع المؤشر الحالي إلى الموضع integer (بالبايت) [[Ruby/IO|للمجرى]] الذي استدعي معه. 
===[[Ruby/IO/pread|pread]]===
+
===[[Ruby/IO/pread|<code>pread</code>]]===
يقرأ <code>maxlen</code> بايت من [[Ruby/IO|مجرى د/خ]]
+
يقرأ من المجرى الذي استدعي معه عددًا محدَّدًا من البايتات باستخدام استدعاء النظام <code>pread</code>، ثم يُعيدها ك[[Ruby/String|سلسلة نصية]] من غير تعديل إزاحة (offset) الواصف الأساسي.
===[[Ruby/IO/print|print]]===
+
===[[Ruby/IO/print|<code>print</code>]]===
يكتب الكائن(ات) المعطاة في [[Ruby/IO|مجرى د/خ]]. ثم يُعيد <code>nil</code>.
+
يكتب الكائن (أو الكائنات) المُمرَّرة إليه في [[Ruby/IO|المجرى]] الذي استدعي معه ثم يُعيد القيمة <code>nil</code>. 
===[[Ruby/IO/printf|printf]]===
+
===[[Ruby/IO/printf|<code>printf</code>]]===
ينسق ويكتب في [[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>.

مراجعة 15:18، 22 ديسمبر 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

يحاول تحويل الكائن المُمرَّر إليه إلى مجرى د/خ باستخدام التابع to_io.

write

يفتح ملفًا محدَّدًا ويكتب فيه السلسلة النصية المُمرَّرة إليه ثم يغلقه ويعيد عدد البايتات التي كتبها. 

توابع النسخة العامة (Public Instance Methods)

<<‎

يكتب كائنًا في المجرى IO المعطى.

advise

يعلن عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد.

autoclose

يُعيّن عند استدعائه بالشكل autoclose = bool قيمة راية الإغلاق التلقائي (auto-close flag) إلى القيمة bool المنطقية.

autoclose?‎

يتحقق إن كان واصف الملف الأساسي لمجرى معين سيُغلق تلقائيًا عند الانتهاء منه.

binmode

يجعل مجرى د/خ في الوضع الثنائي (binary mode).

binmode?‎

يتحقق إن كان مجرى د/خ في الوضع الثنائي (binary mode).

bytes

يعد اسمًا بديلًا مهملًا للتابع each_byte.

chars

يعد اسمًا بديلًا مهملًا للتابع each_char.

close

يغلق المجرى الذي استدعي معه ويرسل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل.

close_on_exec‎

يعين عند استدعائه بالشكل close_on_exec = bool قيمة الراية close-on-exec إلى القيمة bool.

close_on_exec?‎

يتحقق إن كانت الراية close-on-exec الخاصة بالمجرى الذي استدعي معه مضبوطة إلى القيمة true.

close_read

يغلق طرف القراءة الخاص بمجرى د/خ مزدوج (duplex).

close_write

يغلق طرف الكتابة الخاص بمجرى د/خ مزدوج (duplex).

closed?‎

يتحقق إن كان مجرى د/خ مغلقًا تمامًا.

codepoints

يعدُّ اسمًا بديلًا مهملًا للتابع each_codepoint.

each

ينفذ الكتلة المعطاة على كل سطر في المجرى الذي استُدعي معه.

each_byte

يستدعي الكتلة المعطاة على كل بايت (0..255) في المجرى الذي استدعي معه. 

each_char

يستدعي الكتلة المعطاة على كل محرف في المجرى الذي استدعي معه. 

each_codepoint

يمرر كل عدد من الأعداد الترتيبية (Integer ordinal) لكل محرف من المحارف الموجودة في المجرى الذي استدعي معه إلى الكتلة المعطاة.

each_line

ينفذ الكتلة المعطاة على كل سطر في المجرى الذي استدعي معه.

eof

يتحقق إن وصل المجرى الذي استدعي معه إلى نهاية الملف.

eof?‎

يتحقق إن وصل المجرى الذي استدعي معه إلى نهاية الملف.

external_encoding

يُعيد الكائن Encoding الذي يمثل ترميز الملف للمجرى الذي استدعي معه. 

fcntl

يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أو الاستعلام عن مجاري د/خالموجهة بالملفات (file-oriented I/O).

fdatasync

يكتب مباشرةً جميع البيانات المخزنة في مجرى د/خ على القرص.

fileno

يُعيد عددًا صحيحًا يمثل واصف الملف الرقمي للمجرى الذي استدعي معه.

flush

ينقل أي بيانات مخزَّنة في المجرى الذي استدعي معه إلى نظام التشغيل.

fsync

يكتب مباشرةً جميع البيانات المخزنة في المجرى الذي استدعي معه على القرص.

getbyte

يجلب البايت التالي من المجرى الذي استدعي معه.

getc

يجلب محرفًا واحدًا من المجرى الذي استدعي معه.

gets

يجلب السطر التالي من المجرى الذي استدعي معه. 

inspect

يُعيد سلسلة نصية تصف المجرى الذي استُدعي معه.

internal_encoding

يعيد الترميز الخاص بالسلسلة النصية الداخلية في حال تحديد التحويل.

ioctl

يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أو الاستعلام عن أجهزة مجاري د/خ.  

isatty

يتحقق إن كان المجرى الذي استدعي معه مربوطًا بجهاز طرفي (tty).

lineno

يعيد رقم السطر الحالي في المجرى الذي استدعي معه. يجب أن يكون المجرى مفتوحًا في وضعية القراءة.

lineno=‎

يعيّن عند استدعاءه بالشكل lineno = integer رقم السطر الحالي يدويًا إلى القيمة integer.

lines

مرادف مُتجاوز للتابع each_line.

pid

يعيد معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة بالمجرى الذي استدعي معه.

pos

يُعيد موضع المؤشر الحالي بدءًا من بداية الملف (بالبايت) للمجرى الذي استدعي معه.

pos=‎

يحرِّك عند استدعائه بالشكل pos = integer إلى موضع المؤشر الحالي إلى الموضع integer (بالبايت) للمجرى الذي استدعي معه. 

pread

يقرأ من المجرى الذي استدعي معه عددًا محدَّدًا من البايتات باستخدام استدعاء النظام pread، ثم يُعيدها كسلسلة نصية من غير تعديل إزاحة (offset) الواصف الأساسي.

print

يكتب الكائن (أو الكائنات) المُمرَّرة إليه في المجرى الذي استدعي معه ثم يُعيد القيمة 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

يكتب السلسلة النصية المعطاة في مجرى د/خ.

مصادر