الفرق بين المراجعتين لصفحة: «Ruby/IO»

من موسوعة حسوب
لا ملخص تعديل
لا ملخص تعديل
سطر 2: سطر 2:
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby IO]]
[[تصنيف: Ruby IO]]
الصنف <code>IO</code> هو أساس كل عمليات الإدخال والإخراج في روبي. مجرى د/خ (I/O stream) قد يكون مزدوج الاتجاه (''duplexed'')، ولذلك قد يستخدم أكثر من مجرى واحد من مجاري نظام التشغيل.
الصننف <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>. الصنفان يرتبطان ارتباطًا وثيقًا.
سطر 21: سطر 21:


توفر الثابتة العامة <code>[[Ruby/ARGF|ARGF]]</code> (يمكن الدخول إليها عبر ‎<code>$<‎</code>) مجرًى مشابهًا ل[[Ruby/IO|مجرى د/خ]] (I/O)، والذي يسمح بالوصول إلى كافة الملفات المذكورة في سطر الأوامر (أو في المجرى <code>STDIN</code> في حال لم يذكر أي ملف). يمكن استخدام التابع <code>[[Ruby/ARGF/path|ARGF#path]]</code> ومرادفه <code>[[Ruby/ARGF/filename|ARGF#filename]]</code> للوصول إلى اسم الملف الذي تتم قراءته حاليًا.
توفر الثابتة العامة <code>[[Ruby/ARGF|ARGF]]</code> (يمكن الدخول إليها عبر ‎<code>$<‎</code>) مجرًى مشابهًا ل[[Ruby/IO|مجرى د/خ]] (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>، أو من [[Ruby/IO|مجاري د/خ]] (<code>I/O</code>) القياسية <code>input</code> و <code>output</code> و <code>error</code>.
توفر الملحقة io/console توابع للتفاعل مع وحدة التحكم (console). يمكن الوصول إلى وحدة التحكم عبر التابع <code>IO.console</code>، أو من [[Ruby/IO|مجاري د/خ]] (<code>I/O</code>) القياسية <code>input</code> و <code>output</code> و <code>error</code>.


استيراد io/console يؤدي إلى إضافة التوابع التالية:
استيراد io/console يؤدي إلى إضافة التوابع التالية:
* <code>IO::console</code>
*<code>IO::console</code>
* <code>IO#raw</code>
*<code>IO#raw</code>
* <code>IO#raw!‎</code>
*<code>IO#raw!‎</code>
* <code>IO#cooked</code>
*<code>IO#cooked</code>
* <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>
* <code>IO#winsize=‎</code>
*<code>IO#winsize=‎</code>
* <code>IO#iflush</code>
*<code>IO#iflush</code>
* <code>IO#ioflush</code>
*<code>IO#ioflush</code>
* <code>IO#oflush</code>
*<code>IO#oflush</code>
مثال:<syntaxhighlight lang="ruby">require 'io/console'
مثال:<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>
==توابع الصنف العامة (Public Class Methods)==
==توابع الصنف العامة (Public Class Methods)==
===[[Ruby/IO/binread| binread]]===
يفتح  الملف، ثم يتموضع اختياريا في الموضع المعطى
===[[Ruby/IO/binwrite| binwrite]]===
مشابه للتابع <code>[[Ruby/IO/write|write]]</code>،


===[[Ruby/IO/binread | binread]]===
===[[Ruby/IO/copy stream| copy_stream]]===
يفتح  الملف، ثم يتموضع اختياريا في الموضع المعطى <code>offset</code> (انظر فقرة البنية العامة)، ثم يُعيد <code>length</code> بايت (تساوي قيمته الافتراضية طول بقية الملف). يضمن التابع <code>binread</code> أن يُغلق الملف قبل العودة. وضع الفتح سيكون "rb:ASCII-8BIT".
ينسخ المصدر المعطى
===[[Ruby/IO/binwrite | binwrite]]===
===[[Ruby/IO/for fd| for_fd]]===
مشابه للتابع <code>IO.write</code>X، ما عدا أنه يفتح الملف في الوضع الثنائي (binary mode) وبالترميز ASCII-8BIT ‏("wb: ASCII-8BIT‏")‏.
===[[Ruby/IO/copy_stream | copy_stream]]===
ينسخ التابع <code>[[Ruby/IO/copy_stream|::copy_stream]]</code> المصدر المعطى <code>src</code> إلى <code>dst</code> (انظر فقرة البنية العامة). الوسيطان <code>src</code> و <code>dst</code> يمكن أن يكونا إما اسماء ملفات، أو كائن مشابهة للصنف IO. يجب أن يكون للكائنات المشابهة لـ IO بالنسبة للوسيط <code>src</code> التابع <code>[[Ruby/IO/readpartial|readpartial]]</code> أو <code>[[Ruby/IO/read-i|read]]</code>. كما يجب أن يكون للكائنات المشابهة لـ IO بالنسبة للوسيط <code>dst</code> التابع <code>[[Ruby/IO/write-i|write]]</code>. (يمكن استخدام الآليات خاصة، مثل استدعاء نظام sendfile، في بعض الحالات المناسبة.)
===[[Ruby/IO/for_fd | for_fd]]===
مرادف للتابع <code>IO.new</code>.
مرادف للتابع <code>IO.new</code>.
===[[Ruby/IO/foreach | foreach]]===
===[[Ruby/IO/foreach| foreach]]===
ينفذ  الكتلة المعطاة على كل سطر في منفذ [[Ruby/IO|مجرى د/خ]] المسمى، حيث يتم فصل الأسطر بواسطة <code>sep</code>.
ينفذ  الكتلة المعطاة على كل سطر في منفذ [[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/new | new]]===
===[[Ruby/IO/new| new]]===
يُعيد  كائنًا جديدًا من النوع <code>[[Ruby/IO|IO]]</code> لواصف الملف (file descriptor) المعطى <code>fd</code> (انظر فقرة البنية العامة) والوضع <code>mode</code>.  يمكن استخدام <code>opt</code> لتحديد أجزاء من <code>mode</code> بطريقة أكثر قابلية للقراءة.  انظر أيضًا صفحتي <code>[[Ruby/IO/sysopen|::sysopen]]</code> و <code>[[Ruby/IO/for_fd|::for_fd]]</code>.
يُعيد  كائنًا جديدًا من النوع <code>[[Ruby/IO|IO]]</code>
===[[Ruby/IO/open | open]]===
===[[Ruby/IO/open| open]]===
عند عدم تمرير كتلة، فسيكون التابع <code>IO.open</code> مرادفاً للتابع <code>[[Ruby/IO/new|::new]]</code>.  أما في حال تمرير الكتلة البرمجية، فسيُمرّر إليها <code>io</code> (انظر فقرة البنية العامة) كوسيط، وسيتم إغلاق [[Ruby/IO|مجرى د/خ]] (<code>[[Ruby/IO|IO]]</code>) تلقائيًا عند إنهاء الكتلة. في هذه الحالة، سيعيد التابع <code>[[Ruby/IO/open|::open]]</code> قيمة الكتلة.
عند عدم تمرير كتلة، فسيكون التابع <code>IO.open</code> مرادفاً للتابع <code>[[Ruby/IO/new|::new]]</code>.
===[[Ruby/IO/pipe | pipe]]===
===[[Ruby/IO/pipe| pipe]]===
ينشئ  زوجًا من مداخل الأنابيب (pipe endpoints) (متصلة ببعضها البعض) ثم يعيدها على هيئة [[Ruby/Array|مصفوفة]] ثنائية من [[Ruby/IO|مجاري د/خ]] <code>IO</code>:‏ <code>[</code> <code>read_io</code> و <code>write_io</code> <code>]</code>.
ينشئ  زوجًا من مداخل الأنابيب (pipe endpoints) (متصلة ببعضها البعض) ثم يعيدها على هيئة [[Ruby/Array|مصفوفة]] ثنائية من [[Ruby/IO|مجاري د/خ]]
===[[Ruby/IO/popen | popen]]===
===[[Ruby/IO/popen| popen]]===
ينفذ  التعليمة المعطاة (انظر فقرة البنية العامة) على شكل عملية فرعي (subprocess)؛ سيتم توصيل المدخلات والمخرجات القياسية للعملية الفرعية إلى [[Ruby/IO|مجرى د/خ]] (<code>IO</code>) المُعاد.
ينفذ  التعليمة المعطاة على شكل عملية فرعية
===[[Ruby/IO/read | read]]===
===[[Ruby/IO/read| read]]===
يفتح  الملف، ثم يتموضع اختياريا في الموضع المعطى <code>offset</code> (انظر فقرة البنية العامة)، ثم يُعيد <code>length</code> بايت (تساوي قيمته الافتراضية طول بقية الملف).  يضمن التابع <code>read</code> أن يُغلق الملف قبل العودة.
يفتح  الملف، ثم يتموضع اختياريا عند الموضع المعطى
===[[Ruby/IO/readlines | readlines]]===
===[[Ruby/IO/readlines| readlines]]===
يقرأ  كامل الملف المحدد بواسطة <code>name</code> (انظر فقرة البنية العامة) سطرًا سطرًا، ويعيد تلك السطور في [[Ruby/Array|مصفوفة]]. تُفصل السطو بواسطة <code>sep</code>.
يقرأ  كامل الملف المحدد
===[[Ruby/IO/select | select]]===
===[[Ruby/IO/select| select]]===
يستدعي  select(2)‎. ويقوم بمراقبة [[Ruby/Array|المصفوفة]] المعطاة المكونة من [[Ruby/IO|مجرى د/خ]] (كائنات <code>IO</code>)، وينتظر حتى يكون أحد كائنات <code>IO</code> جاهزًا للقراءة، وجاهزا للكتابة، ويكون لها استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد [[Ruby/Array|مصفوفة]] تحتوي على [[Ruby/Array|مصفوفات]] مكونة من [[Ruby/IO|مجرى د/خ]] تلك كائنات <code>[[Ruby/IO|IO]]</code> السابقة.  ستعاد القيمة <code>nil</code> إذا تم إعطاء قيمة للوسيط الاختياري <code>timeout</code> (انظر فقرة البنية العامة)، ولم يكن أي من [[Ruby/IO|مجاري د/خ]] كائن <code>IO</code> جاهزاً خلال <code>timeout</code> ثانية.
يستدعي  <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|عدد صحيح]] <code>[[Ruby/Integer|Integer]]</code>.
يفتح  المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]].
===[[Ruby/IO/try_convert | try_convert]]===
===[[Ruby/IO/try convert| try_convert]]===
يحاول  تحويل الوسيط <code>obj</code> (انظر فقرة البنية العامة) إلى [[Ruby/IO|مجرى د/خ]] (<code>[[Ruby/IO|IO]]</code>)، باستخدام التابع <code>[[Ruby/IO/to_io|#to_io]]</code>. تم يعيد [[Ruby/IO|مجرى د/خ]] <code>[[Ruby/IO|IO]]</code> المُحوّل، أو يعيد <code>nil</code> إذا تعذر تحويل <code>obj</code> لأي سبب من الأسباب.
يحاول  تحويل الوسيط المعطى إلى [[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/write | write]]===
===[[Ruby/IO/write| write]]===
يفتح  الملف، ويتموضع (seeks) اختياريا عند الإزاحة <code>offset</code> المعطاة (انظر فقرة البنية العامة)، ثم يكتب <code>string</code>، ثم يعيد طول [[Ruby/String|السلسلة النصية]] المكتوبة. يضمن التابع <code>write</code> أن يُغلق الملف قبل العودة. إذا لم يتم إعطاء <code>offset</code> في وضع الكتابة (write mode)، سيتم اقتطاع الملف. خلاف ذلك، لا يُقتطع.
يفتح  الملف، ويتموضع اختياريا عند الإزاحة <code>offset</code> المعطاة
===[[Ruby/IO/left_shift | <<]]===
 
مجرى الإخراج النصي <code>[[Ruby/String|String]]</code> - يكتب <code>obj</code> (انظر فقرة البنية العامة) في المجرى <code>ios</code>. سيتم تحويل <code>obj</code> إلى [[Ruby/String|سلسلة نصية]] باستخدام <code>to_s</code>.
== توابع النسخة العامة (Public Instance Methods) ==
===[[Ruby/IO/advise | advise]]===
 
يعلن  عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد. على أنظمة التشغيل التي لا تدعم استدعاء النظام <code>posix_fadvise(2)</code>، هذه التابع عبارة عن عملية فارغة (no-op).
===[[Ruby/IO/left shift| <<]]===
===[[Ruby/IO/autoclose-3D | autoclose=]]===
مجرى الإخراج النصي
===[[Ruby/IO/advise| advise]]===
يعلن  عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد.
===[[Ruby/IO/autoclose-3D| autoclose=]]===
يُعيّن  قيمة راية الإغلاق التلقائي.
يُعيّن  قيمة راية الإغلاق التلقائي.
===[[Ruby/IO/autoclose-3F | autoclose?‎]]===
===[[Ruby/IO/autoclose-3F| autoclose?‎]]===
يُعيد  القيمة <code>true</code> إن كان واصف الملف الأساسي ل[[Ruby/IO|مجرى د/خ]] <code>ios</code> سيتم إغلاقه تلقائياً عند الانتهاء منه، وإلا سيُعيد <code>false</code>.
يُعيد  القيمة <code>true</code> إن كان واصف الملف الأساسي ل[[Ruby/IO|مجرى د/خ]] سيُغله تلقائياً عند الانتهاء منه، وإلا سيُعيد <code>false</code>.
===[[Ruby/IO/binmode | binmode]]===
===[[Ruby/IO/binmode| binmode]]===
يضع  [[Ruby/IO|مجرى د/خ]] <code>ios</code> في الوضع الثنائي (binary mode). بمجرد أن يصير المجرى في الوضع الثنائي، فلا يمكن إعادته إلى الوضع غير الثنائي.
يضع  [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode).
===[[Ruby/IO/binmode-3F | binmode?‎]]===
===[[Ruby/IO/binmode-3F| binmode?‎]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> (انظر فقرة البنية العامة) في الوضع الثنائي (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]]===
 
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each_char|each_char]]</code>.
===[[Ruby/IO/chars| chars]]===
===[[Ruby/IO/close | close]]===
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each char|each_char]]</code>.
يغلق  [[Ruby/IO|مجرى د/خ]] <code>ios</code> (انظر فقرة البنية العامة)، ويرسل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل. المجرى لن يكون متاحًا لأي عمليات إضافية على البيانات؛ وفي حال محاولة إجراء مثل تلك العمليات، فسيُطللق الخطأ <code>IOError</code>. يتم إغلاق [[Ruby/IO|مجاري د/خ]] تلقائيًا من طرف جامع المهملات (garbage collector).
 
===[[Ruby/IO/close_on_exec-3D | close_on_exec=]]===
===[[Ruby/IO/close| close]]===
يغلق  [[Ruby/IO|مجرى د/خ]]، وينقل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل.
===[[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>ios</code> تساوي false.
يُعيد  القيمة <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|مجرى د/خ]] مزدوج (duplex) (على سبيل المثال، إن كان يحتوي على مجرى قراءة وكتابة، مثل الأنابيب [pipes]). سيُطلق الاستثناء <code>IOError</code> إن لم يكن المجرى مزدوجًا.
يغلق  طرف القراءة الخاص بمجرى [[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/close_write | close_write]]===
===[[Ruby/IO/close write| close_write]]===
يغلق  طرف الكتابة الخاص ب[[Ruby/IO|مجرى د/خ]] المزدوج [duplex] (على سبيل المثال، إن كان يحتوي على مجرى قراءة وكتابة، مثل الأنابيب [pipes]). سيُطلق الاستثناء <code>IOError</code> إذا لم يكن المجرى مزدوجًا.
يغلق  طرف الكتابة الخاص ب[[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/closed-3F | closed?‎]]===
===[[Ruby/IO/closed-3F| closed?‎]]===
يعيد  القيمة <code>true</code> ان كان [[Ruby/IO|مجرى د/خ]] مغلقًا <code>ios</code> تماما (بالنسبة الى المجاري المزدوجة - duplex streams -، ينبغي أن يكون القارئ والكاتب مغلقين)، أو سيعيد <code>false</code> خلاف ذلك.
يعيد  القيمة <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|مجرى د/خ]] <code>ios</code>، حيث تُفصل الأسطر بواسطة <code>sep</code>. يجب أن يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> مفتوحا في وضعية القراءة، أو سيُطلق الاستثناء <code>IOError</code>.
ينفذ  الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/each_byte | each_byte]]===
===[[Ruby/IO/each byte| each_byte]]===
يستدعي  الكتلة المعطاة مرة لكل بايت (0..255) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، مع تمرير البايت كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
يستدعي  الكتلة المعطاة على كل بايت (0..255) في [[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/each_char | each_char]]===
===[[Ruby/IO/each char| each_char]]===
يستدعي  الكتلة المعطاةة مرة لكل حرف في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، مع تمرير الحرف كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
يستدعي  الكتلة المعطاة على لكل حرف في [[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/each_codepoint | each_codepoint]]===
===[[Ruby/IO/each codepoint| each_codepoint]]===
يمرر رقم <code>[[Ruby/Integer|Integer]]</code> كل حرف (Integer ordinal) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، مع تمرير رمز اليونيكود (codepoint) كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
ينفذ التابع الكتلة المعطاة، مع تمرير الرمز العددي (Integer ordinal) لكل حرف من الحروف الموجودة  في [[Ruby/IO|مجرى د/خ]]، حيث يمرر رمز اليونيكود (codepoint) كوسيط. 
===[[Ruby/IO/each_line | each_line]]===
===[[Ruby/IO/each line| each_line]]===
ينفذ الكتلة المعطاة لكل سطر في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، حيث تُفصل الأسطر بواسطة <code>sep</code>. يجب أن يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/eof | eof]]===
===[[Ruby/IO/eof| eof]]===
يُعيد  القيمة true إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف، ما يعني أنه لا توجد بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف،
===[[Ruby/IO/eof-3F | eof?‎]]===
===[[Ruby/IO/eof-3F| eof?‎]]===
يُعيد  القيمة true إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف، ما يعني أنه لا لم تعد هناك بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف،
===[[Ruby/IO/external_encoding | external_encoding]]===
===[[Ruby/IO/external encoding| external_encoding]]===
يُعيد [[Ruby/Encoding|الترميز]] <code>[[Ruby/Encoding|Encoding]]</code> الذي يمثل ترميز الملف. إن كان [[Ruby/IO|مجرى د/خ]] <code>io</code> في وضع الكتابة ولم يُحدّد أي ترميز، فستعاد <code>nil</code>.
يُعيد  [[Ruby/Encoding|الترميز]] الخاص بالملف.
===[[Ruby/IO/fcntl | fcntl]]===
===[[Ruby/IO/fcntl| fcntl]]===
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في [[Ruby/IO|مجاري د/خ]] I/O الموجهة بالملفات، أو الاستعلام عنها. الوسائط والنتائج تعتمد على النظام المُستخدم. إن كان الوسيط <code>arg</code> (انظر فقرة البنية العامة) عددًا، فستُمرر قيمته مباشرةً. وإن كان [[Ruby/String|سلسلة نصية]]، فستُفسر على أنها تسلسل ثنائي من البايتات (قد يكون التابع <code>Array#pack</code> طريقة مفيدة لإنشاء مثل هذه السلسلة). على منصات اليونيكس، راجع صفحة <code>fcntl(2)</code> لمزيد من التفاصيل. هذا التابع ليس مُتاح على جميع المنصات.
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في [[Ruby/IO|مجاري د/خ]]
===[[Ruby/IO/fdatasync | fdatasync]]===
===[[Ruby/IO/fdatasync| fdatasync]]===
يكتب  على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] <code>ios</code> في القرص.
يكتب  على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص.
===[[Ruby/IO/fileno | fileno]]===
===[[Ruby/IO/fileno| fileno]]===
يُعيد  عددا صحيحا يمثل واصف الملف الرقمي ل[[Ruby/IO|مجرى د/خ]] <code>ios</code>.
يُعيد عددا صحيحا يمثل واصف الملف الرقمي ل[[Ruby/IO|مجرى د/خ]]
===[[Ruby/IO/flush | flush]]===
===[[Ruby/IO/flush| flush]]===
يرسل (Flushes) أي بيانات مخزنة في [[Ruby/IO|مجرى د/خ]] <code>ios</code> إلى نظام التشغيل (لاحظ أن هذا لا يشمل إلا التخزين المؤقت الداخلي لروبي؛ وقد يقوم نظام التشغيل بتخزين البيانات أيضًا).
ينقل (Flushes) أي بيانات مخزنة في [[Ruby/IO|مجرى د/خ]]  إلى نظام التشغيل
===[[Ruby/IO/fsync | fsync]]===
===[[Ruby/IO/fsync| fsync]]===
يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] <code>ios</code> في القرص. لاحظ أن <code>fsync</code> يختلف عن استخدام <code>IO#sync=</code>. حيث يضمن الأخير أن تُرسل البيانات من المخازن المؤقتة (buffers) لروبي، ​​ولكنه لا يضمن أنّ نظام التشغيل سيكتبها بالفعل في القرص.
يكتب  على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص.
===[[Ruby/IO/getbyte | getbyte]]===
===[[Ruby/IO/getbyte| getbyte]]===
يحصل  على البايت (8-bit byte) الموالي (0..255) من [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف.
يحصل على البايت (0..255) التالي من <nowiki/>[[Ruby/IO|مجرى د/خ]] . ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف.
===[[Ruby/IO/getc | getc]]===
===[[Ruby/IO/getc| getc]]===
يقرأ [[Ruby/String|سلسلة نصية]] مُؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف.
يقرأ [[Ruby/String|سلسلة نصية]] مُؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف.
===[[Ruby/IO/gets | gets]]===
===[[Ruby/IO/gets| gets]]===
يقرأ "السطر" الموالي من [[Ruby/IO|مجرى د/خ]]. السطور مفصولة بواسطة <code>sep</code>. إن كان الفاصل يساوي <code>nil</code>، فسيقرأ المحتويات بالكامل، أما إن كان الفاصل معدوم الطول، فستُقرؤ فقرة في كل مرة من مجرى الإدخال (تُفصل الفقرات بسطرين منفصلين). يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>. سيُعاد السطر المقروء، وستُعين قيمته إلى <code>$_</code>. ستعاد القيمة <code>nil</code> إن تم استُدعي عند نهاية الملف. إن كان الوسيط الأول عددًا صحيحًا أو إن أعطي الوسيط الاختياري الثاني، فلن تكون [[Ruby/String|السلسلة النصية]] المعادة أطول من القيمة المحددة من حيث عدد البايتات (bytes).
يقرأ "السطر" الموالي من [[Ruby/IO|مجرى د/خ]].
===[[Ruby/IO/inspect | inspect]]===
===[[Ruby/IO/inspect| inspect]]===
يُعيد  [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>[[Ruby/IO|IO]]</code>.
يُعيد  [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه.
===[[Ruby/IO/internal_encoding | internal_encoding]]===
===[[Ruby/IO/internal encoding| internal_encoding]]===
يعيد [[Ruby/Encoding|الترميز]] <code>[[Ruby/Encoding|Encoding]]</code> الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حالة تحديد التحويل. على خلاف ذلك سيُعيد <code>nil</code>.
يعيد  [[Ruby/Encoding|الترميز]]  الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حالة تحديد التحويل.
===[[Ruby/IO/ioctl | ioctl]]===
===[[Ruby/IO/ioctl| ioctl]]===
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة [[Ruby/IO|مجاري د/خ]] I/O، أو الاستعلام عنها. الوسائط والنتائج تعتمد على النظام المُستخدم. إن كان الوسيط <code>arg</code> (انظر فقرة البنية العامة) عددًا، فستُمرر قيمته مباشرةً. وإن كان [[Ruby/String|سلسلة نصية]]، فستُفسر على أنها تسلسل ثنائي من البايتات لاستخدامه في منصات اليونيكس، راجع صفحة <code>ioctl(2)</code> لمزيد من التفاصيل.  غير متاح على جميع المنصات.
يوفر  آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة [[Ruby/IO|مجاري د/خ]]
===[[Ruby/IO/isatty | isatty]]===
===[[Ruby/IO/isatty| isatty]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> مربوطا بجهاز طرفي (tty)، أو يعيد <code>false</code> خلاف ذلك.
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] مربوطا بجهاز طرفي (tty)، أو يعيد <code>false</code> خلاف ذلك.
===[[Ruby/IO/lineno | lineno]]===
===[[Ruby/IO/lineno| lineno]]===
يعيد  رقم السطر الحالي في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. يجب أن يكون المجرى مفتوحا في وضعية القراءة. يحسب التابع <code>lineno</code> عدد المرات التي يتم فيها استدعاء <code>[[Ruby/IO/gets|gets]]</code> بدلاً من عدد السطور الجديدة التي تمت مصادفتها. ستختلف القيمتان إن استُدعي <code>[[Ruby/IO/gets|gets]]</code> مع فاصل آخر غير فاصل السطر الجديد.
يعيد  رقم السطر الحالي في [[Ruby/IO|مجرى د/خ]].
===[[Ruby/IO/lineno-3D | lineno=]]===
===[[Ruby/IO/lineno-3D| lineno=‎]]===
يعيّن يدويًا رقم السطر الحالي ويعطيه القيمة المحددة. لن تُحدّث <code>$.</code> إلا عند القراءة التالية.
يعيّن يدويًا رقم السطر الحالي ويعطيه القيمة المحددة.
===[[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]]===
 
يُعيد معرف العملية (PID) الخاص بالعملية الفرعية (child process) تامرتبطة ب[[Ruby/IO|مجرى د/خ]] <code>ios</code>. سيتم تعيينه بواسطة التابع <code>IO.popen</code>.
===[[Ruby/IO/pid| pid]]===
===[[Ruby/IO/pos | pos]]===
يُعيد  معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة ب[[Ruby/IO|مجرى د/خ]].
يُعيد الإزاحة (offset) الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>.
===[[Ruby/IO/pos| pos]]===
===[[Ruby/IO/pos-3D | pos=]]===
يُعيد الإزاحة (offset) الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]].
يسعى إلى التموضع عند الإزاحة المحددة (بالبايت) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ليس مضمونا أن يكون التموضع صحيحًا عندما يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> في الوضع النصي (textmode).
===[[Ruby/IO/pos-3D| pos=‎]]===
===[[Ruby/IO/pread | pread]]===
يسعى  إلى التموضع عند الإزاحة المحددة (بالبايت) في [[Ruby/IO|مجرى د/خ]]
يقرأ  <code>maxlen</code> (انظر فقرة البنية العامة) بايت من [[Ruby/IO|مجرى د/خ]] <code>ios</code> باستخدام استدعاء النظام pread، ثم يُعيدها ك[[Ruby/String|سلسلة نصية]] من غير تعديل إزاحة (offset) الواصف الأساسي. هذا مفيد مقارنة بالجمع بين <code>[[Ruby/IO/seek|#seek]]</code> و <code>[[Ruby/IO/read|#read]]</code> في كونه ذريًا (atomic)، مما يسمح لعدة [[Ruby/Thread|مهام فرعية]]/عمليات بالتشارك في نفس [[Ruby/IO|مجرى د/خ]] <code>[[Ruby/IO|IO]]</code> لقراءة الملف في مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين من طبقة [[Ruby/IO|مجرى د/خ]] <code>[[Ruby/IO|IO]]</code>. في حال إعطاء الوسيط الاختياري <code>outbuf</code> (انظر فقرة البنية العامة)، فينبغي أن يشير إلى [[Ruby/String|سلسلة نصية]] <code>[[Ruby/String|String]]</code>، والتي ستتلقى البيانات. سيُطلق استثناء <code>SystemCallError</code> عند الخطأ، أو <code>EOFError</code> عند نهاية الملف، أو <code>NotImplementedError</code> إن لم يكن نظام التشغيل يدعم استدعاء النظام.
===[[Ruby/IO/pread| pread]]===
===[[Ruby/IO/print | print]]===
يقرأ <code>maxlen</code> بايت من [[Ruby/IO|مجرى د/خ]]
يكتب الكائن(ات) المعطاة في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ثم يُعيد <code>nil</code>.
===[[Ruby/IO/print| print]]===
===[[Ruby/IO/printf | printf]]===
يكتب الكائن(ات) المعطاة في [[Ruby/IO|مجرى د/خ]]. ثم يُعيد <code>nil</code>.
ينسق  ويكتب في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، حيث يحول الوسائط المعطاة وفق سلسلة التنسيق الممررة format_string (انظر فقرة البنية العامة). انظر صفحة <code>Kernel#sprintf</code> لمزيد من التفاصيل.
===[[Ruby/IO/printf| printf]]===
===[[Ruby/IO/putc | putc]]===
ينسق  ويكتب في [[Ruby/IO|مجرى د/خ]]،
إن كان الوسيط المعطى <code>obj</code> (انظر فقرة البنية العامة) عددًا <code>[[Ruby/Numeric|Numeric]]</code>، فسيكتب  الحرف الذي يكون رمزه هو البايت الأقل دلال (least-significant byte) من <code>obj</code>. وإن كان <code>obj</code> [[Ruby/String|سلسلة نصية]] <code>String</code>، فسيكتب أول حرف من <code>obj</code> في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. خلاف ذلك، سيُطلق الاستثناء <code>TypeError</code>.
===[[Ruby/IO/putc| putc]]===
===[[Ruby/IO/puts | puts]]===
إن كان الوسيط المعطى <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|مجرى د/خ]] <code>ios</code>. ويكتب سطرًا جديدا بعد أي سطر لا ينتهي بالفعل بمحرف السطر الجديد. ثم يعيد <code>nil</code>.
===[[Ruby/IO/puts| puts]]===
===[[Ruby/IO/pwrite | pwrite]]===
يكتب الكائن(اات) المعطاة في [[Ruby/IO|مجرى د/خ]].
يكتب [[Ruby/String|السلسلة النصية]] المعطاة (انظر فقرة البنية العامة) في [[Ruby/IO|مجرى د/خ]] <code>ios</code> عند موضع الإزاحة <code>offset</code> باستخدام استدعاء النظام pwrite ()‎. هذا مفيد مقارنة بالجمع بين <code>[[Ruby/IO/seek|#seek]]</code> و <code>[[Ruby/IO/write|#write]]</code> في كونه ذريًا (atomic)، مما يسمح لعدة [[Ruby/Thread|مهام فرعية]]/عمليات بالتشارك في نفس [[Ruby/IO|مجرى د/خ]] <code>[[Ruby/IO|IO]]</code> لقراءة الملف من مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين من طبقة [[Ruby/IO|مجرى د/خ]] <code>[[Ruby/IO|IO]]</code>. سيعيد عدد البايتات المكتوبة. وسيُطلق الاستثناء <code>SystemCallError</code> في حال حدوث خطأ، أو <code>NotImplementedError</code> إذا لم يكن نظام الشغيل يدعم استدعاء النظام.
===[[Ruby/IO/pwrite| pwrite]]===
===[[Ruby/IO/read-i | read]]===
يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] عند موضع الإزاحة المعطى.
يقرأ  <code>length</code> بايتًا (انظر فقرة البنية العامة) من [[Ruby/IO|مجرى د/خ]].
===[[Ruby/IO/read-i| read]]===
===[[Ruby/IO/read_nonblock | read_nonblock]]===
يقرأ عددا من البايتات من [[Ruby/IO|مجرى د/خ]].
يقرأ  على الأكثر <code>maxlen</code> (انظر فقرة البنية العامة) بايتًا من [[Ruby/IO|مجرى د/خ]] <code>ios</code> باستخدام استدعاء النظام read(2)‎ بعد تعيين O_NONBLOCK في واصف الملف (file descriptor) الأساسي.
===[[Ruby/IO/read nonblock| read_nonblock]]===
===[[Ruby/IO/readbyte | readbyte]]===
يقرأ على الأكثر <code>maxlen</code> بايتًا من [[Ruby/IO|مجرى د/خ]].
يقرأ  البايت كما يفعل التابع <code>IO#getbyte</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> على نهاية الملف.
===[[Ruby/IO/readbyte| readbyte]]===
===[[Ruby/IO/readchar | readchar]]===
يقرأ البايت كما يفعل التابع <code>getbyte</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف.
يقرأ  [[Ruby/String|سلسلة نصية]] مؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ويطلق الاستثناء <code>EOFError</code> عند نهاية الملف.
===[[Ruby/IO/readchar| readchar]]===
===[[Ruby/IO/readline | readline]]===
يقرأ [[Ruby/String|سلسلة نصية]] مؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويطلق الاستثناء <code>EOFError</code> عند نهاية الملف.
يقرأ  سطرًا كما يفعل التابع <code>IO#gets</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف.
===[[Ruby/IO/readline| readline]]===
===[[Ruby/IO/readlines-i | readlines]]===
يقرأ  سطرًا كما يفعل التابع <code>gets</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف.
يقرأ  كل الأسطر الموجودة في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، ثم يعيدها في [[Ruby/Array|مصفوفة]]. يتم فصل الأسطر بالوسيط الاختياري <code>sep</code> (انظر فقرة البنية العامة). إن كان الوسيط <code>sep</code> يساوي <code>nil</code>، فسسيُعاد بقية المجرى كتسجيلة (record) واحدة. إن كان الوسيط الأول عددًا صحيحًا، أو إن أعطي الوسيط الاختياري الثاني، فلن تكون [[Ruby/String|السلسلة النصية]] المعادة أطول من حيث عدد البايتات من القيمة المحددة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُطلق استثناء <code>IOError</code>.
===[[Ruby/IO/readlines-i| readlines]]===
===[[Ruby/IO/readpartial | readpartial]]===
يقرأ كل الأسطر الموجودة في [[Ruby/IO|مجرى د/خ]]، ثم يعيدها في [[Ruby/Array|مصفوفة]].
يقرأ  <code>maxlen</code> (انظر فقرة البنية العامة) بايتًا على الأكثر من [[Ruby/IO|مجرى د/خ]]. لا يقوم  بالتعطيل إلا في حال لم يكن في [[Ruby/IO|مجرى د/خ]] <code>ios</code> أي بيانات متوفرة آنيًا. لن يقوم بالتعطيل في حالة توفر بعض البيانات.
===[[Ruby/IO/readpartial| readpartial]]===
===[[Ruby/IO/reopen | reopen]]===
يقرأ  <code>maxlen</code>بايتًا على الأكثر من [[Ruby/IO|مجرى د/خ]].
يربط  بين [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> وبين [[Ruby/IO|مجرى د/خ]] المعطى في <code>other_IO</code> (انظر فقرة البنية العامة)، أو مجرى جديد يُفتح من المسار <code>path</code>. قد يؤدي هذا إلى تغيير الصنف الفعلي لهذا المجرى ديناميكيًا.
===[[Ruby/IO/reopen| reopen]]===
===[[Ruby/IO/rewind | rewind]]===
يربط  بين [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه وبين [[Ruby/IO|مجرى د/خ]] المعطى.
يُموضِع  [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> عند بداية الإدخال، مع تعيين <code>[[Ruby/IO/lineno|lineno]]</code> عند القيمة صفر.
===[[Ruby/IO/rewind| rewind]]===
===[[Ruby/IO/seek | seek]]===
يُموضِع  [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه عند بداية الإدخال، مع تعيين <code>[[Ruby/IO/lineno|lineno]]</code> عند القيمة صفر.
يسعى  إلى التموضع عند الإزاحة المعطاة <code>anInteger</code> في [[Ruby/IO|مجرى د/خ]] وفقا لقيمة <code>whence</code> (انظر فقرة البنية العامة):
===[[Ruby/IO/seek| seek]]===
===[[Ruby/IO/set_encoding | set_encoding]]===
يسعى إلى التموضع عند الإزاحة المعطاة <code>anInteger</code> في [[Ruby/IO|مجرى د/خ]]
في حال تمرير وسيط واحد، فستوسم [[Ruby/String|السلسلة النصية]] المقروءة من [[Ruby/IO|مجرى د/خ]] وفق [[Ruby/Encoding|الترميز]] المحدد.  إن كان الترميز على هيئة حرفي ترميز مفصولين بنقطتين رأسيتين "A: B"، فستُحوّل [[Ruby/String|السلسلة النصية]] المقروءة من الترميز A (الترميز الخارجي) إلى الترميز B (الترميز الداخلي)، ثم توسم بـ B.  في حال إعطاء وسيطين، فيجب أن يكونا كائني [[Ruby/Encoding|ترميز]]، أو اسمي ترميز، حيث يمثل أولها الترميز الخارجي، فيما يمثل ثانيهما الترميز الداخلي. في حال تحديد الترميز الخارجي والترميز الداخلي، فسيحدد الوسيط الاختياري opt خيارات التحويل.
===[[Ruby/IO/set encoding| set_encoding]]===
===[[Ruby/IO/stat | stat]]===
في حال تمرير وسيط واحد، فستوسم السلسلة النصية المقروءة من <nowiki/>[[Ruby/IO|مجرى د/خ]] <nowiki/>[[Ruby/Encoding|بالترميز]] المحدد.
يُعيد  معلومات الحالة ل[[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> على هيئة كائن من النوع <code>File::Stat</code>.
===[[Ruby/IO/stat| stat]]===
===[[Ruby/IO/sync | sync]]===
يُعيد  معلومات الحالة ل[[Ruby/IO|مجرى د/خ]] الذي استُدعي معه على هيئة كائن من النوع <code>File::Stat</code>.
يُعيد  قيمة راية وضع المزامنة "sync mode" الحالية ل[[Ruby/IO|مجرى د/خ]] <code>ios</code>. عندما تكون قيمة وضع المزامنة true، فسيتم إرسال كل المخرجات فورًا إلى نظام التشغيل، ولن يُخزّن مؤقتًا من قبل روبي داخليًا. انظر أيضا صفحة <code>IO#fsync</code>.
===[[Ruby/IO/sync| sync]]===
===[[Ruby/IO/sync-3D | sync=]]===
يُعيد  قيمة راية وضع المزامنة "sync mode" الحالية ل[[Ruby/IO|مجرى د/خ]].
يضبط  قيمة راية وضع المزامنة “sync mode' عند إحدى القيمتين <code>true</code> أو <code>false</code>. عندما تكون قيمة وضع المزامنة true، فسيتم إرسال كل المخرجات فورًا إلى نظام التشغيل، ولن تُخزن (buffered) داخليًا. يُعيد  الحالة الجديدة. انظر أيضا صفحة <code>IO#fsync</code>.
===[[Ruby/IO/sync-3D| sync=‎]]===
===[[Ruby/IO/sysread | sysread]]===
يضبط قيمة راية وضع المزامنة “sync mode' عند إحدى القيمتين <code>true</code> أو <code>false</code>.
يقرأ  <code>maxlen</code> (انظر فقرة البنية العامة) بايتًا من [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> باستخدام قراءة منخفضة المستوى (low-level read) ويُعيدها ك[[Ruby/String|سلسلة نصية]].  لا تخلط هذا التابع مع التوابع الأخرى التي تقرأ من [[Ruby/IO|مجرى د/خ]] <code>ios</code>، أو قد تحصل على نتائج غير متوقعة.
===[[Ruby/IO/sysread| sysread]]===
===[[Ruby/IO/sysseek | sysseek]]===
يقرأ عددا من البايتات من [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه.
يسعى  إلى التموضع عند الإزاحة المعطاة <code>offset</code> (انظر فقرة البنية العامة) وفقا لقيمة <code>whence</code> (انظر <code>IO#seek</code> للتعرف على القيم الممكنة للوسيط <code>whence</code>). يُعيد الإزاحة الجديدة للملف.
===[[Ruby/IO/sysseek| sysseek]]===
===[[Ruby/IO/syswrite | syswrite]]===
يسعى  إلى التموضع عند الإزاحة المعطاة.
يكتب  [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> باستخدام كتابة منخفض المستوى (low-level write). ثم يعيد عدد البايتات المكتوبة. لا تخلط هذا التابع مع التوابع الأخرى التي تكتب في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، أو قد تحصل على نتائج غير متوقعة. يُطلق استثناء <code>SystemCallError</code> عند حدوث خطأ.
===[[Ruby/IO/syswrite| syswrite]]===
===[[Ruby/IO/tell | tell]]===
يكتب  [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه.
يُعيد  الإزاحة الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>.
===[[Ruby/IO/tell| tell]]===
===[[Ruby/IO/to_i | to_i]]===
يُعيد  الإزاحة الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]].
===[[Ruby/IO/to i| to_i]]===
 مرادف للتابع <code>[[Ruby/IO/fileno|fileno]]</code>.


===[[Ruby/IO/to_io | to_io]]===
===[[Ruby/IO/to io| to_io]]===
يعيد  [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code>.
يعيد  [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه.
===[[Ruby/IO/tty-3F | tty?‎]]===
===[[Ruby/IO/tty-3F| tty?‎]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> مربوطا بطرفية (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|مجرى د/خ]] الذي استُدعي معه <code>ios</code>، بحيث ستعيدها القراءة التالية من المخزن المؤقت (buffer). لا يمكنك أن تدفع إلا بايتًا واحدا فقط قبل عملية القراءة اللاحقة (أي، لن تتمكن من قراءة إلا آخر بايت من البايتات التي دفتعها). ليس له أي تأثير مع القراءات غير التخزينية (unbuffered reads) (مثل <code>IO#sysread</code>).
يدفع (Pushes back)  البايتات (التي تم تمريرها كوسيط) إلى [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه.
===[[Ruby/IO/ungetc | ungetc]]===
===[[Ruby/IO/ungetc| ungetc]]===
يدفع  حرفا واحدا (المُمرر كوسيط) في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code>، بحيث ستعيدها القراءة التالية من المخزن المؤقت (buffer). لا يمكنك أن تدفع إلا حرف واحد فقط قبل عملية القراءة اللاحقة (أي، لن تتمكن من قراءة إلا آخر حرف من الحروف التي دفتعها). ليس له أي تأثير مع القراءات غير التخزينية (unbuffered reads) (مثل <code>IO#sysread</code>).
يدفع  حرفا واحدا (المُمرر كوسيط) في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه.
===[[Ruby/IO/write-i | write]]===
===[[Ruby/IO/write-i| write]]===
يكتب  [[Ruby/String|السلاسل النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. يجب أن يكون المجرى مفتوحا في وضعية للكتابة. سيتم تحويل الوسائط غير النصية إلى [[Ruby/String|سلسلة نصية]] باستخدام <code>to_s</code>. يُعيد  عدد البايتات المكتوبة في الإجمال.
يكتب  [[Ruby/String|السلاسل النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]].
===[[Ruby/IO/write_nonblock | write_nonblock]]===
===[[Ruby/IO/write nonblock| write_nonblock]]===
يكتب  [[Ruby/String|السلسلة النصية]] المعطاة في <code>ios</code> باستخدام استدعاء النظام write(2)‎ بعد تعيين O_NONBLOCK لواصف الملف (file descriptor) الأساسي.
يكتب  [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]].
==مصادر==
==مصادر==
*[http://ruby-doc.org/core-2.5.1/IO.html قسم  الصنف IO في توثيق روبي الرسمي.]
*[http://ruby-doc.org/core-2.5.1/IO.html قسم  الصنف IO في توثيق روبي الرسمي.]

مراجعة 23:23، 13 نوفمبر 2018

الصننف IO هو أساس كل عمليات الإدخال والإخراج في روبي. مجرى د/خ (I/O stream) قد يكون مزدوج الاتجاه (duplexed)، ولذلك قد يستخدم أكثر من مجرى واحد من مجاري نظام التشغيل.

الكثير من الأمثلة الواردة في في هذا القسم تستخدم الصنف File، وهو االصنف الفرعي (subclass) القياسي الوحيد للصنف IO. الصنفان يرتبطان ارتباطًا وثيقًا.

مثل صنف الملفات، فإنّ المكتبة Socket تشتق أصنافًا فرعيةً من الصنف IO (مثل TCPSocket أو UDPSocket).

يمكن أن ينشئ التابع Kernel#open كائنات من الصنف IO (أو File) من أنواع الوسائط التالية:

  • سلسلة نصية لتمثيل اسم ملف مناسب لنظام التشغيل المستخدم.
  • سلسلة نصية تبدأ بالمحرف "|" كناية عن عملية فرعية (subprocess). يتم استدعاء الجزء الموالي للمحرف "|" من السلسلة النصية كعملية (process)، هذه العملية ستكون متصلة بقنوات الإدخال/الإخراج (د/خ) المناسبة.
  • إن كانت السلسلة النصية تساوي "‎|-‎"، فسيتم إنشاء نسخة (instance) أخرى من روبي كعملية فرعية.

يمكن فتح مجرى د/خ (IO) مع مختلف أوضاع الملفات (مثلًا، وضع القراءة فقط [read-only] أو الكتابة فقط [write-only]) ووفق الترميزات المناسبة لأجل إجراء عمليات التحويل. انظر صفحة التابع new للتعرف على هذه الخيارات. وانظر صفحة Kernel#open لمزيد من التفاصيل حول مختلف تنسيقات الأوامر المذكورة أعلاه.

يمكن أيضًا استخدام التابع popen أو المكتبة Open3 أو Process#spawn للتواصل مع العمليات الفرعية عبر مجرى د/خ (IO).

ستُحول روبي أسماء المسارات بما يتوافق مع نظام التشغيل المستخدم إن أمكن. على سبيل المثال، في نظام ويندوز، سيُفتح اسم الملف "/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، أو من مجاري د/خ (I/O) القياسية 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

مثال:

require 'io/console'
rows, columns = $stdout.winsize
puts "Your screen is #{columns} wide and #{rows} tall"

توابع الصنف العامة (Public Class Methods)

binread

يفتح الملف، ثم يتموضع اختياريا في الموضع المعطى

binwrite

مشابه للتابع write،

copy_stream

ينسخ المصدر المعطى

for_fd

مرادف للتابع IO.new.

foreach

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

new

يُعيد كائنًا جديدًا من النوع IO

open

عند عدم تمرير كتلة، فسيكون التابع IO.open مرادفاً للتابع ::new.

pipe

ينشئ زوجًا من مداخل الأنابيب (pipe endpoints) (متصلة ببعضها البعض) ثم يعيدها على هيئة مصفوفة ثنائية من مجاري د/خ

popen

ينفذ التعليمة المعطاة على شكل عملية فرعية

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 بايت من مجرى د/خ

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

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

مصادر