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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(مراجعة وتدقيق.)
 
(3 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الصنف <code>IO</code> في روبي}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:الصنف <code>IO</code> في روبي}}</noinclude>
 
[[تصنيف: Ruby]]
 
[[تصنيف: Ruby]]
 +
[[تصنيف: Ruby Class]]
 
[[تصنيف: 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>، إذ يرتبط الصنفان ارتباطًا وثيقًا.
  
مثل صنف [[Ruby/File|الملفات]]، فإنّ المكتبة Socket تشتق أصنافًا فرعيةً من الصنف <code>IO</code> (مثل <code>TCPSocket</code> أو <code>UDPSocket</code>).
+
مثل الصنف [[Ruby/File|<code>File</code>]]، فإنّ المكتبة Socket تشتق أصنافًا فرعيةً من الصنف <code>IO</code> (مثل <code>TCPSocket</code> أو <code>UDPSocket</code>).
  
يمكن أن ينشئ التابع <code>[[Ruby/Kernel/open|Kernel#open]]</code> كائنات من الصنف <code>IO</code> (أو <code>[[Ruby/File|File]]</code>) من أنواع الوسائط التالية:
+
يمكن أن ينشئ التابع <code>[[Ruby/Kernel/open|Kernel.open]]</code> كائنات من الصنف <code>IO</code> (أو <code>[[Ruby/File|File]]</code>) من أنواع الوسائط التالية:
 
*[[Ruby/String|سلسلة نصية]] لتمثيل اسم ملف مناسب لنظام التشغيل المستخدم.
 
*[[Ruby/String|سلسلة نصية]] لتمثيل اسم ملف مناسب لنظام التشغيل المستخدم.
*[[Ruby/String|سلسلة نصية]] تبدأ بالمحرف <code>"|"</code> كناية عن عملية فرعية (subprocess). يتم استدعاء الجزء الموالي للمحرف <code>"|"</code> من [[Ruby/String|السلسلة النصية]] كعملية (process)، هذه العملية ستكون متصلة بقنوات الإدخال/الإخراج (د/خ) المناسبة.
+
*[[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>) مع مختلف أوضاع الملفات (مثلًا، وضع القراءة فقط [read-only] أو الكتابة فقط [write-only]) ووفق الترميزات المناسبة لأجل إجراء عمليات التحويل. انظر صفحة التابع <code>[[Ruby/IO/new|new]]</code> للتعرف على هذه الخيارات.  وانظر صفحة <code>[[Ruby/Kernel/open|Kernel#open]]</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#spawn]]</code> للتواصل مع العمليات الفرعية عبر [[Ruby/IO|مجرى د/خ]] (<code>IO)</code>.
+
يمكن أيضًا استخدام التابع <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>.
+
ستُحول روبي أسماء المسارات بما يتوافق مع نظام التشغيل المستخدم إن أمكن. على سبيل المثال، في نظام ويندوز، سيُفتح اسم الملف <code>"/gumby/ruby/test.rb"</code> باعتباره <code>"\gumby\ruby\test.rb"</code>.
  
عند تحديد اسم ملف بنمط ويندوز في [[Ruby/String|سلسلة نصية]]، ​​تذكر أن تُخلّص (escape) الشرطات المائلة العكسية، مثلا:<syntaxhighlight lang="ruby">"C:\\gumby\\ruby\\test.rb"‎</syntaxhighlight>سوف نستخدم في الأمثلة الموجودة في صفحات التوابع الشرطة المائلة للأمام على نمط اليونيكس؛ يمكن الحصول على الحرف الفاصل الخاص بنظام التشغيل عبر  <code>File::ALT_SEPARATOR</code>.
+
عند تحديد اسم ملف بنمط ويندوز في [[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>) مجرًى مشابهًا ل[[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>) مجرًى مشابهًا لمجرى د/خ (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>، أو من مجاري الدخل والخرج القياسية التي هي <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'
+
إليك المثال التالي حول استدعاء الملحقة 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>
==توابع الصنف العامة (Public Class Methods)==
 
  
===[[Ruby/IO/binread | binread]]===
+
== الثوابت ==
يفتح  الملف، ثم يتموضع اختياريا في الموضع المعطى <code>offset</code> (انظر فقرة البنية العامة)، ثم يُعيد <code>length</code> بايت (تساوي قيمته الافتراضية طول بقية الملف). يضمن التابع <code>binread</code> أن يُغلق الملف قبل العودة. وضع الفتح سيكون "rb:ASCII-8BIT".
+
 
===[[Ruby/IO/binwrite | binwrite]]===
+
=== <code>EWOULDBLOCKWaitReadable</code> ===
مشابه للتابع <code>IO.write</code>X، ما عدا أنه يفتح الملف في الوضع الثنائي (binary mode) وبالترميز ASCII-8BIT ‏("wb: ASCII-8BIT‏")‏.
+
اطلع على صفحة الصنف <code>[[Ruby/IO::EAGAINWaitReadable|IO::EAGAINWaitReadable]]</code>.
===[[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، في بعض الحالات المناسبة.)
+
=== <code>EWOULDBLOCKWaitWritable</code> ===
===[[Ruby/IO/for_fd | for_fd]]===
+
اطلع على صفحة الصنف <code>[[Ruby/IO::EAGAINWaitWritable|IO::EAGAINWaitWritable]]</code>.
مرادف للتابع <code>IO.new</code>.
+
 
===[[Ruby/IO/foreach | foreach]]===
+
=== <code>SEEK_CUR</code> ===
ينفذ الكتلة المعطاة على كل سطر في منفذ [[Ruby/IO|مجرى د/خ]] المسمى، حيث يتم فصل الأسطر بواسطة <code>sep</code>.
+
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من الموضع الحالي له.
===[[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>SEEK_DATA</code> ===
===[[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> قيمة الكتلة.
+
 
===[[Ruby/IO/pipe | pipe]]===
+
=== <code>SEEK_END</code> ===
ينشئ  زوجًا من مداخل الأنابيب (pipe endpoints) (متصلة ببعضها البعض) ثم يعيدها على هيئة [[Ruby/Array|مصفوفة]] ثنائية من [[Ruby/IO|مجاري د/خ]] <code>IO</code>:‏ <code>[</code> <code>read_io</code> و <code>write_io</code> <code>]</code>.
+
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من النهاية.
===[[Ruby/IO/popen | popen]]===
+
 
ينفذ  التعليمة المعطاة (انظر فقرة البنية العامة) على شكل عملية فرعي (subprocess)؛ سيتم توصيل المدخلات والمخرجات القياسية للعملية الفرعية إلى [[Ruby/IO|مجرى د/خ]] (<code>IO</code>) المُعاد.
+
=== <code>SEEK_HOLE</code> ===
===[[Ruby/IO/read | read]]===
+
يضبط موضع مؤشِّر عملية الدخل والخرج إلى الفجوة التالية.
يفتح  الملف، ثم يتموضع اختياريا في الموضع المعطى <code>offset</code> (انظر فقرة البنية العامة)، ثم يُعيد <code>length</code> بايت (تساوي قيمته الافتراضية طول بقية الملف).  يضمن التابع <code>read</code> أن يُغلق الملف قبل العودة.
+
 
===[[Ruby/IO/readlines | readlines]]===
+
=== <code>SEEK_SET</code> ===
يقرأ  كامل الملف المحدد بواسطة <code>name</code> (انظر فقرة البنية العامة) سطرًا سطرًا، ويعيد تلك السطور في [[Ruby/Array|مصفوفة]]. تُفصل السطو بواسطة <code>sep</code>.
+
يضبط موضع مؤشِّر عملية الدخل والخرج بدءًا من البداية.
===[[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> ثانية.
+
==توابع الصنف العامة==
===[[Ruby/IO/sysopen | sysopen]]===
+
===[[Ruby/IO/binread|<code>binread</code>]]===
يفتح  المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]] <code>[[Ruby/Integer|Integer]]</code>.
+
يفتح الملف ثم يحرِّك موضع المؤشر بمقدار محدد (في حال إعطائه) ثم يجلب جميع محتوى الملف بدءًا من موضع المؤشر وحتى نهاية الملف أو يجلب حجم محدَّد من البيانات.
===[[Ruby/IO/try_convert | try_convert]]===
+
===[[Ruby/IO/binwrite|<code>binwrite</code>]]===
يحاول  تحويل الوسيط <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> لأي سبب من الأسباب.
+
يشبه التابع <code>[[Ruby/IO/write|write]]</code> باستثناء أنه يفتح الملف في الوضع الثنائي (binary mode) وبالترميز ASCII-8BIT.
===[[Ruby/IO/write | write]]===
+
 
يفتح  الملف، ويتموضع (seeks) اختياريا عند الإزاحة <code>offset</code> المعطاة (انظر فقرة البنية العامة)، ثم يكتب <code>string</code>، ثم يعيد طول [[Ruby/String|السلسلة النصية]] المكتوبة. يضمن التابع <code>write</code> أن يُغلق الملف قبل العودة. إذا لم يتم إعطاء <code>offset</code> في وضع الكتابة (write mode)، سيتم اقتطاع الملف. خلاف ذلك، لا يُقتطع.
+
===[[Ruby/IO/copy stream|<code>copy_stream</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>.
+
===[[Ruby/IO/for fd|<code>for_fd</code>]]===
===[[Ruby/IO/advise | advise]]===
+
يعد مرادفًا للتابع <code>[[Ruby/IO/new|new]]</code>.
يعلن  عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد. على أنظمة التشغيل التي لا تدعم استدعاء النظام <code>posix_fadvise(2)</code>، هذه التابع عبارة عن عملية فارغة (no-op).
+
===[[Ruby/IO/foreach|<code>foreach</code>]]===
===[[Ruby/IO/autoclose-3D | autoclose=]]===
+
ينفذ الكتلة المعطاة على كل سطر في منفذ مجرى د/خ المسمى. 
يُعيّن  قيمة راية الإغلاق التلقائي.
+
===[[Ruby/IO/new|<code>new</code>]]===
===[[Ruby/IO/autoclose-3F | autoclose?‎]]===
+
ينشئ كائنًا جديدًا من النوع <code>IO</code>.
يُعيد  القيمة <code>true</code> إن كان واصف الملف الأساسي ل[[Ruby/IO|مجرى د/خ]] <code>ios</code> سيتم إغلاقه تلقائياً عند الانتهاء منه، وإلا سيُعيد <code>false</code>.
+
===[[Ruby/IO/open|<code>open</code>]]===
===[[Ruby/IO/binmode | binmode]]===
+
يشبه التابعَ <code>[[Ruby/IO/new|new]]</code> تمامًا عند استدعائه دون كتلة، أو يُمرّر الكائن <code>IO</code> الذي جرى إنشاؤه كوسيط إلى الكتلة المعطاة ثم يعيد الناتج الذي تعيده الكتلة.
يضع  [[Ruby/IO|مجرى د/خ]] <code>ios</code> في الوضع الثنائي (binary mode). بمجرد أن يصير المجرى في الوضع الثنائي، فلا يمكن إعادته إلى الوضع غير الثنائي.
+
===[[Ruby/IO/pipe|<code>pipe</code>]]===
===[[Ruby/IO/binmode-3F | binmode?‎]]===
+
ينشئ زوجًا من طرفي أنبوب (pipe endpoints) متصلين ببعضهما بعضًا ثم يعيدهما على هيئة [[Ruby/Array|مصفوفة]] من الكائنات <code>IO</code>.
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> (انظر فقرة البنية العامة) في الوضع الثنائي (binary mode).
+
===[[Ruby/IO/popen|<code>popen</code>]]===
===[[Ruby/IO/bytes | bytes]]===
+
ينفذ الأمر المعطى كعملية فرعية (subprocess) مع توصيل المجرَيَين القياسيين للدخل والخرج للعملية الفرعية مع المجرى <nowiki/><code>IO</code> المُعاد.
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each_byte|each_byte]]</code>.
+
===[[Ruby/IO/read|<code>read</code>]]===
===[[Ruby/IO/chars | chars]]===
+
يقرأ ملفًا محددًا بعد فتحه ثم يغلقه قبل إعادة الناتج.
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each_char|each_char]]</code>.
+
===[[Ruby/IO/readlines|<code>readlines</code>]]===
===[[Ruby/IO/close | close]]===
+
يقرأ ملفًا بأكمله سطرًا سطرًا ثم يعيد تلك الأسطر في [[Ruby/Array|مصفوفة]].
يغلق  [[Ruby/IO|مجرى د/خ]] <code>ios</code> (انظر فقرة البنية العامة)، ويرسل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل. المجرى لن يكون متاحًا لأي عمليات إضافية على البيانات؛ وفي حال محاولة إجراء مثل تلك العمليات، فسيُطللق الخطأ <code>IOError</code>. يتم إغلاق [[Ruby/IO|مجاري د/خ]] تلقائيًا من طرف جامع المهملات (garbage collector).
+
===[[Ruby/IO/select|<code>select</code>]]===
===[[Ruby/IO/close_on_exec-3D | close_on_exec=]]===
+
يستدعي استدعاء النظام <code>select(2)‎</code>. ويراقب [[Ruby/Array|المصفوفة]] المعطاة المكونة من مجاري د/خ (كائنات <code>IO</code>)، وينتظر حتى يكون واحد أو أكثر من تلك المجاري جاهزًا للقراءة، وجاهزًا للكتابة، ويكون له استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد [[Ruby/Array|مصفوفة]] مؤلفة من [[Ruby/Array|مصفوفات]] مكونة من تلك المجاري.
يعين  الراية close-on-exec.
+
===[[Ruby/IO/sysopen|<code>sysopen</code>]]===
===[[Ruby/IO/close_on_exec-3F | close_on_exec?‎]]===
+
يفتح الملف الموجود في المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]].
يُعيد  القيمة <code>true</code> إن كانت الراية close_on_exec الخاصة ب[[Ruby/IO|مجرى د/خ]] <code>ios</code> تساوي false.
+
===[[Ruby/IO/try convert|<code>try_convert</code>]]===
===[[Ruby/IO/close_read | close_read]]===
+
يحاول تحويل الكائن المُمرَّر إليه إلى مجرى د/خ باستخدام التابع <code>[[Ruby/IO/to io|to_io]]</code>.
يغلق  طرف القراءة الخاص بمجرى [[Ruby/IO|مجرى د/خ]] مزدوج (duplex) (على سبيل المثال، إن كان يحتوي على مجرى قراءة وكتابة، مثل الأنابيب [pipes]). سيُطلق الاستثناء <code>IOError</code> إن لم يكن المجرى مزدوجًا.
+
===[[Ruby/IO/write|<code>write</code>]]===
===[[Ruby/IO/close_write | close_write]]===
+
يفتح ملفًا محدَّدًا ويكتب فيه السلسلة النصية المُمرَّرة إليه ثم يغلقه ويعيد عدد البايتات التي كتبها. 
يغلق  طرف الكتابة الخاص ب[[Ruby/IO|مجرى د/خ]] المزدوج [duplex] (على سبيل المثال، إن كان يحتوي على مجرى قراءة وكتابة، مثل الأنابيب [pipes]). سيُطلق الاستثناء <code>IOError</code> إذا لم يكن المجرى مزدوجًا.
+
 
===[[Ruby/IO/closed-3F | closed?‎]]===
+
== توابع النسخة العامة (Public Instance Methods) ==
يعيد  القيمة <code>true</code> ان كان [[Ruby/IO|مجرى د/خ]] مغلقًا <code>ios</code> تماما (بالنسبة الى المجاري المزدوجة - duplex streams -، ينبغي أن يكون القارئ والكاتب مغلقين)، أو سيعيد <code>false</code> خلاف ذلك.
+
 
===[[Ruby/IO/codepoints | codepoints]]===
+
===‎[[Ruby/IO/left shift|<code><<‎</code>]]===
هو مرادف مُتجاوز للتابع <code>[[Ruby/IO/each_codepoint|each_codepoint]]</code>.
+
يكتب كائنًا في المجرى <code>IO</code> المعطى.
===[[Ruby/IO/each | each]]===
+
===[[Ruby/IO/advise|<code>advise</code>]]===
ينفذ  الكتلة المعطاة لكل سطر في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، حيث تُفصل الأسطر بواسطة <code>sep</code>. يجب أن يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> مفتوحا في وضعية القراءة، أو سيُطلق الاستثناء <code>IOError</code>.
+
يعلن عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد.
===[[Ruby/IO/each_byte | each_byte]]===
+
===[[Ruby/IO/autoclose-3D|<code>autoclose</code>]]===
يستدعي  الكتلة المعطاة مرة لكل بايت (0..255) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، مع تمرير البايت كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
يُعيّن عند استدعائه بالشكل <code>autoclose = bool</code> قيمة راية الإغلاق التلقائي (auto-close flag) إلى القيمة <code>bool</code> المنطقية.
===[[Ruby/IO/each_char | each_char]]===
+
===[[Ruby/IO/autoclose-3F|<code>autoclose?‎</code>]]===
يستدعي  الكتلة المعطاةة مرة لكل حرف في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، مع تمرير الحرف كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
يتحقق إن كان واصف الملف الأساسي لمجرى معين سيُغلق تلقائيًا عند الانتهاء منه.
===[[Ruby/IO/each_codepoint | each_codepoint]]===
+
===[[Ruby/IO/binmode|<code>binmode</code>]]===
يمرر  رقم <code>[[Ruby/Integer|Integer]]</code> كل حرف (Integer ordinal) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، مع تمرير رمز اليونيكود (codepoint) كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
يجعل مجرى د/خ في الوضع الثنائي (binary mode).
===[[Ruby/IO/each_line | each_line]]===
+
===[[Ruby/IO/binmode-3F|<code>binmode?‎</code>]]===
ينفذ  الكتلة المعطاة لكل سطر في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، حيث تُفصل الأسطر بواسطة <code>sep</code>. يجب أن يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
يتحقق إن كان مجرى د/خ في الوضع الثنائي (binary mode).
===[[Ruby/IO/eof | eof]]===
+
===[[Ruby/IO/bytes|<code>bytes</code>]]===
يُعيد  القيمة true إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف، ما يعني أنه لا توجد بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
يعد اسمًا بديلًا مهملًا للتابع <code>[[Ruby/IO/each byte|each_byte]]</code>.
===[[Ruby/IO/eof-3F | eof?‎]]===
+
 
يُعيد  القيمة true إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> في نهاية الملف، ما يعني أنه لا لم تعد هناك بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء <code>IOError</code>.
+
===[[Ruby/IO/chars|<code>chars</code>]]===
===[[Ruby/IO/external_encoding | external_encoding]]===
+
يعد اسمًا بديلًا مهملًا للتابع <code>[[Ruby/IO/each char|each_char]]</code>.
يُعيد  [[Ruby/Encoding|الترميز]] <code>[[Ruby/Encoding|Encoding]]</code> الذي يمثل ترميز الملف. إن كان [[Ruby/IO|مجرى د/خ]] <code>io</code> في وضع الكتابة ولم يُحدّد أي ترميز، فستعاد <code>nil</code>.
+
 
===[[Ruby/IO/fcntl | fcntl]]===
+
===[[Ruby/IO/close|<code>close</code>]]===
يوفر  آلية لإصدار أوامر منخفضة المستوى للتحكم في [[Ruby/IO|مجاري د/خ]] I/O الموجهة بالملفات، أو الاستعلام عنها. الوسائط والنتائج تعتمد على النظام المُستخدم. إن كان الوسيط <code>arg</code> (انظر فقرة البنية العامة) عددًا، فستُمرر قيمته مباشرةً. وإن كان [[Ruby/String|سلسلة نصية]]، فستُفسر على أنها تسلسل ثنائي من البايتات (قد يكون التابع <code>Array#pack</code> طريقة مفيدة لإنشاء مثل هذه السلسلة). على منصات اليونيكس، راجع صفحة <code>fcntl(2)</code> لمزيد من التفاصيل. هذا التابع ليس مُتاح على جميع المنصات.
+
يغلق المجرى الذي استدعي معه ويرسل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل.
===[[Ruby/IO/fdatasync | fdatasync]]===
+
===[[Ruby/IO/close on exec-3D|<code>close_on_exec‎</code>]]===
يكتب  على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] <code>ios</code> في القرص.
+
يعين عند استدعائه بالشكل <code>close_on_exec = bool</code> قيمة الراية <code>close-on-exec</code> إلى القيمة <code>bool</code>.
===[[Ruby/IO/fileno | fileno]]===
+
===[[Ruby/IO/close on exec-3F|<code>close_on_exec?‎</code>]]===
يُعيد  عددا صحيحا يمثل واصف الملف الرقمي ل[[Ruby/IO|مجرى د/خ]] <code>ios</code>.
+
يتحقق إن كانت الراية <code>close-on-exec</code> الخاصة بالمجرى الذي استدعي معه مضبوطة إلى القيمة <code>true</code>.
===[[Ruby/IO/flush | flush]]===
+
===[[Ruby/IO/close read|<code>close_read</code>]]===
يرسل (Flushes)  أي بيانات مخزنة في [[Ruby/IO|مجرى د/خ]] <code>ios</code> إلى نظام التشغيل (لاحظ أن هذا لا يشمل إلا التخزين المؤقت الداخلي لروبي؛ وقد يقوم نظام التشغيل بتخزين البيانات أيضًا).
+
يغلق طرف القراءة الخاص بمجرى د/خ مزدوج (duplex).
===[[Ruby/IO/fsync | fsync]]===
+
===[[Ruby/IO/close write|<code>close_write</code>]]===
يكتب  على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] <code>ios</code> في القرص. لاحظ أن <code>fsync</code> يختلف عن استخدام <code>IO#sync=</code>. حيث يضمن الأخير أن تُرسل البيانات من المخازن المؤقتة (buffers) لروبي، ​​ولكنه لا يضمن أنّ نظام التشغيل سيكتبها بالفعل في القرص.
+
يغلق طرف الكتابة الخاص بمجرى د/خ مزدوج (duplex).
===[[Ruby/IO/getbyte | getbyte]]===
+
===[[Ruby/IO/closed-3F|<code>closed?‎</code>]]===
يحصل  على البايت (8-bit byte) الموالي (0..255) من [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف.
+
يتحقق إن كان مجرى د/خ مغلقًا تمامًا.
===[[Ruby/IO/getc | getc]]===
+
===[[Ruby/IO/codepoints|<code>codepoints</code>]]===
يقرأ  [[Ruby/String|سلسلة نصية]] مُؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف.
+
يعدُّ اسمًا بديلًا مهملًا للتابع <code>[[Ruby/IO/each codepoint|each_codepoint]]</code>.
===[[Ruby/IO/gets | gets]]===
+
===[[Ruby/IO/each|<code>each</code>]]===
يقرأ "السطر" الموالي من [[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/each byte|<code>each_byte</code>]]===
يُعيد  [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>[[Ruby/IO|IO]]</code>.
+
يستدعي الكتلة المعطاة على كل بايت (0..255) في المجرى الذي استدعي معه. 
===[[Ruby/IO/internal_encoding | internal_encoding]]===
+
===[[Ruby/IO/each char|<code>each_char</code>]]===
يعيد  [[Ruby/Encoding|الترميز]] <code>[[Ruby/Encoding|Encoding]]</code> الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حالة تحديد التحويل.  على خلاف ذلك سيُعيد <code>nil</code>.
+
يستدعي الكتلة المعطاة على كل محرف في المجرى الذي استدعي معه. 
===[[Ruby/IO/ioctl | ioctl]]===
+
===[[Ruby/IO/each codepoint|<code>each_codepoint</code>]]===
يوفر  آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة [[Ruby/IO|مجاري د/خ]] I/O، أو الاستعلام عنها. الوسائط والنتائج تعتمد على النظام المُستخدم. إن كان الوسيط <code>arg</code> (انظر فقرة البنية العامة) عددًا، فستُمرر قيمته مباشرةً. وإن كان [[Ruby/String|سلسلة نصية]]، فستُفسر على أنها تسلسل ثنائي من البايتات لاستخدامه في منصات اليونيكس، راجع صفحة <code>ioctl(2)</code> لمزيد من التفاصيل.  غير متاح على جميع المنصات.
+
يمرر كل عدد من الأعداد الترتيبية (Integer ordinal) لكل محرف من المحارف الموجودة في المجرى الذي استدعي معه إلى الكتلة المعطاة.
===[[Ruby/IO/isatty | isatty]]===
+
===[[Ruby/IO/each line|<code>each_line</code>]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> مربوطا بجهاز طرفي (tty)، أو يعيد <code>false</code> خلاف ذلك.
+
ينفذ الكتلة المعطاة على كل سطر في المجرى الذي استدعي معه.
===[[Ruby/IO/lineno | lineno]]===
+
===[[Ruby/IO/eof|<code>eof</code>]]===
يعيد  رقم السطر الحالي في [[Ruby/IO|مجرى د/خ]] <code>ios</code>.  يجب أن يكون المجرى مفتوحا في وضعية القراءة. يحسب التابع <code>lineno</code> عدد المرات التي يتم فيها استدعاء <code>[[Ruby/IO/gets|gets]]</code> بدلاً من عدد السطور الجديدة التي تمت مصادفتها.  ستختلف القيمتان إن استُدعي <code>[[Ruby/IO/gets|gets]]</code> مع فاصل آخر غير فاصل السطر الجديد.
+
يتحقق إن وصل المجرى الذي استدعي معه إلى نهاية الملف.
===[[Ruby/IO/lineno-3D | lineno=]]===
+
===[[Ruby/IO/eof-3F|<code>eof?‎</code>]]===
يعيّن  يدويًا رقم السطر الحالي ويعطيه القيمة المحددة. لن تُحدّث <code>$.</code> إلا عند القراءة التالية.
+
يتحقق إن وصل المجرى الذي استدعي معه إلى نهاية الملف.
===[[Ruby/IO/lines | lines]]===
+
===[[Ruby/IO/external encoding|<code>external_encoding</code>]]===
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each_line|each_line]]</code>.
+
يُعيد الكائن <nowiki/>[[Ruby/Encoding|<code>Encoding</code>]] الذي يمثل ترميز الملف للمجرى الذي استدعي معه. 
===[[Ruby/IO/pid | pid]]===
+
===[[Ruby/IO/fcntl|<code>fcntl</code>]]===
يُعيد  معرف العملية (PID) الخاص بالعملية الفرعية (child process) تامرتبطة ب[[Ruby/IO|مجرى د/خ]] <code>ios</code>. سيتم تعيينه بواسطة التابع <code>IO.popen</code>.
+
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أو الاستعلام عن <nowiki/>مجاري د/خ <nowiki/>الموجهة بالملفات (file-oriented I/O).
===[[Ruby/IO/pos | pos]]===
+
===[[Ruby/IO/fdatasync|<code>fdatasync</code>]]===
يُعيد  الإزاحة (offset) الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>.
+
يكتب مباشرةً جميع البيانات المخزنة في مجرى د/خ على القرص.
===[[Ruby/IO/pos-3D | pos=]]===
+
===[[Ruby/IO/fileno|<code>fileno</code>]]===
يسعى  إلى التموضع عند الإزاحة المحددة (بالبايت) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ليس مضمونا أن يكون التموضع صحيحًا عندما يكون [[Ruby/IO|مجرى د/خ]] <code>ios</code> في الوضع النصي (textmode).
+
يُعيد عددًا صحيحًا يمثل واصف الملف الرقمي للمجرى الذي استدعي معه.
===[[Ruby/IO/pread | pread]]===
+
===[[Ruby/IO/flush|<code>flush</code>]]===
يقرأ  <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/print | print]]===
+
===[[Ruby/IO/fsync|<code>fsync</code>]]===
يكتب  الكائن(ات) المعطاة في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ثم يُعيد <code>nil</code>.
+
يكتب مباشرةً جميع البيانات المخزنة في المجرى الذي استدعي معه على القرص.
===[[Ruby/IO/printf | printf]]===
+
===[[Ruby/IO/getbyte|<code>getbyte</code>]]===
ينسق  ويكتب في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، حيث يحول الوسائط المعطاة وفق سلسلة التنسيق الممررة format_string (انظر فقرة البنية العامة). انظر صفحة <code>Kernel#sprintf</code> لمزيد من التفاصيل.
+
يجلب البايت التالي من المجرى الذي استدعي معه.
===[[Ruby/IO/putc | putc]]===
+
===[[Ruby/IO/getc|<code>getc</code>]]===
إن كان الوسيط المعطى <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/puts | puts]]===
+
===[[Ruby/IO/gets|<code>gets</code>]]===
يكتب  الكائن(اات) المعطى في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ويكتب سطرًا جديدا بعد أي سطر لا ينتهي بالفعل بمحرف السطر الجديد. ثم يعيد <code>nil</code>.
+
يجلب السطر التالي من المجرى الذي استدعي معه. 
===[[Ruby/IO/pwrite | pwrite]]===
+
===[[Ruby/IO/inspect|<code>inspect</code>]]===
يكتب  [[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/String|سلسلة نصية]] تصف المجرى الذي استُدعي معه.
===[[Ruby/IO/read-i | read]]===
+
===[[Ruby/IO/internal encoding|<code>internal_encoding</code>]]===
يقرأ  <code>length</code> بايتًا (انظر فقرة البنية العامة) من [[Ruby/IO|مجرى د/خ]].
+
يعيد [[Ruby/Encoding|الترميز]] الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حال تحديد التحويل.
===[[Ruby/IO/read_nonblock | read_nonblock]]===
+
===[[Ruby/IO/ioctl|<code>ioctl</code>]]===
يقرأ  على الأكثر <code>maxlen</code> (انظر فقرة البنية العامة) بايتًا من [[Ruby/IO|مجرى د/خ]] <code>ios</code> باستخدام استدعاء النظام read(2)‎ بعد تعيين O_NONBLOCK في واصف الملف (file descriptor) الأساسي.
+
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أو الاستعلام عن أجهزة مجاري د/خ.  
===[[Ruby/IO/readbyte | readbyte]]===
+
===[[Ruby/IO/isatty|<code>isatty</code>]]===
يقرأ  البايت كما يفعل التابع <code>IO#getbyte</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> على نهاية الملف.
+
يتحقق إن كان [[Ruby/IO|المجرى]] الذي استدعي معه مربوطًا بجهاز طرفي (tty).
===[[Ruby/IO/readchar | readchar]]===
+
===[[Ruby/IO/lineno|<code>lineno</code>]]===
يقرأ  [[Ruby/String|سلسلة نصية]] مؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]] <code>ios</code>. ويطلق الاستثناء <code>EOFError</code> عند نهاية الملف.
+
يعيد رقم السطر الحالي في [[Ruby/IO|المجرى]] الذي استدعي معه. يجب أن يكون المجرى مفتوحًا في وضعية القراءة.
===[[Ruby/IO/readline | readline]]===
+
===[[Ruby/IO/lineno-3D|<code>lineno=‎</code>]]===
يقرأ  سطرًا كما يفعل التابع <code>IO#gets</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف.
+
يعيّن عند استدعاءه بالشكل <code>lineno = integer</code> رقم السطر الحالي يدويًا إلى القيمة <code>integer</code>.
===[[Ruby/IO/readlines-i | readlines]]===
+
===[[Ruby/IO/lines|<code>lines</code>]]===
يقرأ  كل الأسطر الموجودة في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، ثم يعيدها في [[Ruby/Array|مصفوفة]]. يتم فصل الأسطر بالوسيط الاختياري <code>sep</code> (انظر فقرة البنية العامة). إن كان الوسيط <code>sep</code> يساوي <code>nil</code>، فسسيُعاد بقية المجرى كتسجيلة (record) واحدة. إن كان الوسيط الأول عددًا صحيحًا، أو إن أعطي الوسيط الاختياري الثاني، فلن تكون [[Ruby/String|السلسلة النصية]] المعادة أطول من حيث عدد البايتات من القيمة المحددة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُطلق استثناء <code>IOError</code>.
+
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each line|each_line]]</code>.
===[[Ruby/IO/readpartial | readpartial]]===
+
 
يقرأ  <code>maxlen</code> (انظر فقرة البنية العامة) بايتًا على الأكثر من [[Ruby/IO|مجرى د/خ]]. لا يقوم  بالتعطيل إلا في حال لم يكن في [[Ruby/IO|مجرى د/خ]] <code>ios</code> أي بيانات متوفرة آنيًا. لن يقوم بالتعطيل في حالة توفر بعض البيانات.
+
===[[Ruby/IO/pid|<code>pid</code>]]===
===[[Ruby/IO/reopen | reopen]]===
+
يعيد معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة بالمجرى الذي استدعي معه.
يربط  بين [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> وبين [[Ruby/IO|مجرى د/خ]] المعطى في <code>other_IO</code> (انظر فقرة البنية العامة)، أو مجرى جديد يُفتح من المسار <code>path</code>. قد يؤدي هذا إلى تغيير الصنف الفعلي لهذا المجرى ديناميكيًا.
+
===[[Ruby/IO/pos|<code>pos</code>]]===
===[[Ruby/IO/rewind | rewind]]===
+
يُعيد موضع المؤشر الحالي بدءًا من بداية الملف (بالبايت) [[Ruby/IO|للمجرى]] الذي استدعي معه.
يُموضِع  [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> عند بداية الإدخال، مع تعيين <code>[[Ruby/IO/lineno|lineno]]</code> عند القيمة صفر.
+
===[[Ruby/IO/pos-3D|<code>pos=‎</code>]]===
===[[Ruby/IO/seek | seek]]===
+
يحرِّك عند استدعائه بالشكل <code>pos = integer</code> موضع المؤشر الحالي إلى الموضع integer (بالبايت) [[Ruby/IO|للمجرى]] الذي استدعي معه. 
يسعى  إلى التموضع عند الإزاحة المعطاة <code>anInteger</code> في [[Ruby/IO|مجرى د/خ]] وفقا لقيمة <code>whence</code> (انظر فقرة البنية العامة):
+
===[[Ruby/IO/pread|<code>pread</code>]]===
===[[Ruby/IO/set_encoding | set_encoding]]===
+
يقرأ من المجرى الذي استدعي معه عددًا محدَّدًا من البايتات باستخدام استدعاء النظام <code>pread</code>، ثم يُعيدها ك[[Ruby/String|سلسلة نصية]] من غير تعديل إزاحة (offset) الواصف الأساسي.
في حال تمرير وسيط واحد، فستوسم [[Ruby/String|السلسلة النصية]] المقروءة من [[Ruby/IO|مجرى د/خ]] وفق [[Ruby/Encoding|الترميز]] المحدد.  إن كان الترميز على هيئة حرفي ترميز مفصولين بنقطتين رأسيتين "A: B"، فستُحوّل [[Ruby/String|السلسلة النصية]] المقروءة من الترميز A (الترميز الخارجي) إلى الترميز B (الترميز الداخلي)، ثم توسم بـ B.  في حال إعطاء وسيطين، فيجب أن يكونا كائني [[Ruby/Encoding|ترميز]]، أو اسمي ترميز، حيث يمثل أولها الترميز الخارجي، فيما يمثل ثانيهما الترميز الداخلي. في حال تحديد الترميز الخارجي والترميز الداخلي، فسيحدد الوسيط الاختياري opt خيارات التحويل.
+
===[[Ruby/IO/print|<code>print</code>]]===
===[[Ruby/IO/stat | stat]]===
+
يكتب الكائن (أو الكائنات) المُمرَّرة إليه في [[Ruby/IO|المجرى]] الذي استدعي معه ثم يُعيد القيمة <code>nil</code>. 
يُعيد  معلومات الحالة ل[[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> على هيئة كائن من النوع <code>File::Stat</code>.
+
===[[Ruby/IO/printf|<code>printf</code>]]===
===[[Ruby/IO/sync | sync]]===
+
ينسق الكائنات المُمرَّرة إليه ثم يكتبها في المجرى الذي استدعي معه. 
يُعيد  قيمة راية وضع المزامنة "sync mode" الحالية ل[[Ruby/IO|مجرى د/خ]] <code>ios</code>. عندما تكون قيمة وضع المزامنة true، فسيتم إرسال كل المخرجات فورًا إلى نظام التشغيل، ولن يُخزّن مؤقتًا من قبل روبي داخليًا. انظر أيضا صفحة <code>IO#fsync</code>.
+
===[[Ruby/IO/putc|<code>putc</code>]]===
===[[Ruby/IO/sync-3D | sync=]]===
+
يكتب المحرف المُمرَّر إليه في المجرى الذي استدعي معه.
يضبط  قيمة راية وضع المزامنة “sync mode' عند إحدى القيمتين <code>true</code> أو <code>false</code>. عندما تكون قيمة وضع المزامنة true، فسيتم إرسال كل المخرجات فورًا إلى نظام التشغيل، ولن تُخزن (buffered) داخليًا. يُعيد  الحالة الجديدة. انظر أيضا صفحة <code>IO#fsync</code>.
+
===[[Ruby/IO/puts|<code>puts</code>]]===
===[[Ruby/IO/sysread | sysread]]===
+
يكتب الكائن(ات) المُمرَّرة إليه في المجرى الذي استُدعي معه، ويضيف سطرًا جديدًا بعد الأسطر التي لا تنتهي بمحرف السطر الجديد ثم يعيد القيمة <code>nil</code>. 
يقرأ  <code>maxlen</code> (انظر فقرة البنية العامة) بايتًا من [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> باستخدام قراءة منخفضة المستوى (low-level read) ويُعيدها ك[[Ruby/String|سلسلة نصية]].  لا تخلط هذا التابع مع التوابع الأخرى التي تقرأ من [[Ruby/IO|مجرى د/خ]] <code>ios</code>، أو قد تحصل على نتائج غير متوقعة.
+
===[[Ruby/IO/pwrite|<code>pwrite</code>]]===
===[[Ruby/IO/sysseek | sysseek]]===
+
يكتب [[Ruby/String|السلسلة النصية]] المُمرَّرة إليه في موضع محدَّد من المجرى الذي استُدعي معه باستخدام استدعاء دالة النظام <code>pwrite()‎</code>.  
يسعى  إلى التموضع عند الإزاحة المعطاة <code>offset</code> (انظر فقرة البنية العامة) وفقا لقيمة <code>whence</code> (انظر <code>IO#seek</code> للتعرف على القيم الممكنة للوسيط <code>whence</code>). يُعيد الإزاحة الجديدة للملف.
+
===[[Ruby/IO/read-i|<code>read</code>]]===
===[[Ruby/IO/syswrite | syswrite]]===
+
يقرأ عددًا محدَّدًا من البايتات من المجرى الذي استدعي معه.
يكتب  [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code> باستخدام كتابة منخفض المستوى (low-level write). ثم يعيد عدد البايتات المكتوبة. لا تخلط هذا التابع مع التوابع الأخرى التي تكتب في [[Ruby/IO|مجرى د/خ]] <code>ios</code>، أو قد تحصل على نتائج غير متوقعة. يُطلق استثناء <code>SystemCallError</code> عند حدوث خطأ.
+
===[[Ruby/IO/read nonblock|<code>read_nonblock</code>]]===
===[[Ruby/IO/tell | tell]]===
+
يقرأ عددًا محدَّدًا من البايتات من المجرى الذي استُدعي معه باستخدام استدعاء النظام <code>read(2)‎</code> بعد تعيين الراية <code>O_NONBLOCK</code> لواصف الملف (file descriptor) الأساسي.
يُعيد  الإزاحة الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]] <code>ios</code>.
+
===[[Ruby/IO/readbyte|<code>readbyte</code>]]===
===[[Ruby/IO/to_i | to_i]]===
+
يقرأ بايتًا واحدًا من المجرى الذي استدعي معه.
 +
===[[Ruby/IO/readchar|<code>readchar</code>]]===
 +
يقرأ محرفًا واحدًا من المجرى الذي استدعي معه.
 +
===[[Ruby/IO/readline|<code>readline</code>]]===
 +
يقرأ سطرًا واحدًا من المجرى الذي استدعي معه.
 +
===[[Ruby/IO/readlines-i|<code>readlines</code>]]===
 +
يقرأ كل الأسطر الموجودة في المجرى الذي استدعي معه ثم يعيدها في [[Ruby/Array|مصفوفة]]
 +
===[[Ruby/IO/readpartial|<code>readpartial</code>]]===
 +
يقرأ عددًا محدَّدًا من البايتات من المجرى الذي استدعي معه.
 +
===[[Ruby/IO/reopen|<code>reopen</code>]]===
 +
يعيد ربط المجرى الذي استُدعي معه مع مجرى آخر جديد أو موجود مسبقًا.
 +
===[[Ruby/IO/rewind|<code>rewind</code>]]===
 +
يعيد مؤشر المجرى الذي استُدعي معه إلى موضع بداية الإدخال.
 +
===[[Ruby/IO/seek|<code>seek</code>]]===
 +
يحرِّك مؤشر المجرى الذي استدعي معه إلى موضع محدَّد.
 +
===[[Ruby/IO/set encoding|<code>set_encoding</code>]]===
 +
يضبط الترميز الداخلي والخارجي في المجرى الذي استدعي معه.
 +
===[[Ruby/IO/stat|<code>stat</code>]]===
 +
يُعيد معلومات حالة المجرى الذي استُدعي معه على هيئة كائن من النوع<code>[[Ruby/File::Stat|File::Stat]]</code>.
 +
===[[Ruby/IO/sync|<code>sync</code>]]===
 +
يُعيد قيمة راية وضع المزامنة (sync mode) للمجرى الذي استدعي معه. 
 +
===[[Ruby/IO/sync-3D|<code>sync=</code>]]===
 +
يضبط عند استدعائه بالشكل <code>sync = boolean</code> قيمة راية "وضع المزامنة" (sync mode) إلى القيمة <code>boolean</code> المنطقية. 
 +
===[[Ruby/IO/sysread|<code>sysread</code>]]===
 +
يقرأ عددًا محدَّدًا من البايتات من المجرى الذي استدعي معه باستخدام قراءة منخفضة المستوى (low-level read)، ثم يُعيدها ك[[Ruby/String|سلسلة نصية]].
 +
===[[Ruby/IO/sysseek|<code>sysseek</code>]]===
 +
يحرِّك مؤشر <nowiki/>[[Ruby/IO|المجرى]] الذي استدعي معه إلى موضع محدَّد.
 +
===[[Ruby/IO/syswrite|<code>syswrite</code>]]===
 +
يكتب [[Ruby/String|السلسلة النصية]] المُمرَّرة إليه في المجرى الذي استُدعي معه باستخدام كتابة منخفض المستوى (low-level write). 
 +
===[[Ruby/IO/tell|<code>tell</code>]]===
 +
يُعيد موضع المؤشر الحالي (بالبايت) للمجرى الذي استدعي معه.
 +
===[[Ruby/IO/to i|<code>to_i</code>]]===
 +
يعد اسمًا بديلًا للتابع <code>[[Ruby/IO/fileno|fileno]]</code>.
  
===[[Ruby/IO/to_io | to_io]]===
+
===[[Ruby/IO/to io|<code>to_io</code>]]===
يعيد [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code>.
+
يعيد المجرى نفسه الذي استُدعي معه.
===[[Ruby/IO/tty-3F | tty?‎]]===
+
===[[Ruby/IO/tty-3F|<code>tty?‎</code>]]===
يُعيد  القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] <code>ios</code> مربوطا بطرفية (tty)، أو يعيد <code>false</code> خلاف ذلك.
+
يتحقق إن كان المجرى الذي استدعي معه مرتبطًا بجهاز طرفي (tty).
===[[Ruby/IO/ungetbyte | ungetbyte]]===
+
===[[Ruby/IO/ungetbyte|<code>ungetbyte</code>]]===
يدفع (Pushes back) البايتات (التي تم تمريرها كوسيط) إلى [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code>، بحيث ستعيدها القراءة التالية من المخزن المؤقت (buffer). لا يمكنك أن تدفع إلا بايتًا واحدا فقط قبل عملية القراءة اللاحقة (أي، لن تتمكن من قراءة إلا آخر بايت من البايتات التي دفتعها). ليس له أي تأثير مع القراءات غير التخزينية (unbuffered reads) (مثل <code>IO#sysread</code>).
+
يعيد دفع (pushes) البايتات (الممررة كمعامل إليه) إلى المجرى الذي استُدعي معه، بحيث تعيدها القراءة التالية من المخزن المؤقت (buffer) لهذا المجرى. 
===[[Ruby/IO/ungetc | ungetc]]===
+
===[[Ruby/IO/ungetc|<code>ungetc</code>]]===
يدفع  حرفا واحدا (المُمرر كوسيط) في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه <code>ios</code>، بحيث ستعيدها القراءة التالية من المخزن المؤقت (buffer). لا يمكنك أن تدفع إلا حرف واحد فقط قبل عملية القراءة اللاحقة (أي، لن تتمكن من قراءة إلا آخر حرف من الحروف التي دفتعها). ليس له أي تأثير مع القراءات غير التخزينية (unbuffered reads) (مثل <code>IO#sysread</code>).
+
يعيد دفع محرف واحد (الذي مُرِّر إليه) إلى المجرى الذي استُدعي معه، بحيث تعيده القراءة التالية من المخزن المؤقت (buffer). 
===[[Ruby/IO/write-i | write]]===
+
===[[Ruby/IO/write-i|<code>write</code>]]===
يكتب [[Ruby/String|السلاسل النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] <code>ios</code>. يجب أن يكون المجرى مفتوحا في وضعية للكتابة. سيتم تحويل الوسائط غير النصية إلى [[Ruby/String|سلسلة نصية]] باستخدام <code>to_s</code>. يُعيد  عدد البايتات المكتوبة في الإجمال.
+
يكتب [[Ruby/String|السلاسل النصية]] المُمرَّرة إليه في المجرى الذي استدعي معه. 
===[[Ruby/IO/write_nonblock | write_nonblock]]===
+
===[[Ruby/IO/write nonblock|<code>write_nonblock</code>]]===
يكتب [[Ruby/String|السلسلة النصية]] المعطاة في <code>ios</code> باستخدام استدعاء النظام write(2)‎ بعد تعيين O_NONBLOCK لواصف الملف (file descriptor) الأساسي.
+
يكتب [[Ruby/String|السلسلة النصية]] المُمرَّرة إليه في المجرى الذي استُدعي معه باستخدام استدعاء النظام <code>write(2)‎</code> بعد تعيين قيمة الراية <code>O_NONBLOCK</code> الخاصة بواصف الملف (file descriptor) الأساسي.
 
==مصادر==
 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/IO.html قسم  الصنف IO في توثيق روبي الرسمي.]
+
*[http://ruby-doc.org/core-2.5.1/IO.html صفحة الصنف IO في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 12:34، 23 ديسمبر 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

يكتب المحرف المُمرَّر إليه في المجرى الذي استدعي معه.

puts

يكتب الكائن(ات) المُمرَّرة إليه في المجرى الذي استُدعي معه، ويضيف سطرًا جديدًا بعد الأسطر التي لا تنتهي بمحرف السطر الجديد ثم يعيد القيمة nil

pwrite

يكتب السلسلة النصية المُمرَّرة إليه في موضع محدَّد من المجرى الذي استُدعي معه باستخدام استدعاء دالة النظام pwrite()‎.  

read

يقرأ عددًا محدَّدًا من البايتات من المجرى الذي استدعي معه.

read_nonblock

يقرأ عددًا محدَّدًا من البايتات من المجرى الذي استُدعي معه باستخدام استدعاء النظام read(2)‎ بعد تعيين الراية O_NONBLOCK لواصف الملف (file descriptor) الأساسي.

readbyte

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

readchar

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

readline

يقرأ سطرًا واحدًا من المجرى الذي استدعي معه.

readlines

يقرأ كل الأسطر الموجودة في المجرى الذي استدعي معه ثم يعيدها في مصفوفة

readpartial

يقرأ عددًا محدَّدًا من البايتات من المجرى الذي استدعي معه.

reopen

يعيد ربط المجرى الذي استُدعي معه مع مجرى آخر جديد أو موجود مسبقًا.

rewind

يعيد مؤشر المجرى الذي استُدعي معه إلى موضع بداية الإدخال.

seek

يحرِّك مؤشر المجرى الذي استدعي معه إلى موضع محدَّد.

set_encoding

يضبط الترميز الداخلي والخارجي في المجرى الذي استدعي معه.

stat

يُعيد معلومات حالة المجرى الذي استُدعي معه على هيئة كائن من النوعFile::Stat.

sync

يُعيد قيمة راية وضع المزامنة (sync mode) للمجرى الذي استدعي معه. 

sync=‎

يضبط عند استدعائه بالشكل sync = boolean قيمة راية "وضع المزامنة" (sync mode) إلى القيمة boolean المنطقية. 

sysread

يقرأ عددًا محدَّدًا من البايتات من المجرى الذي استدعي معه باستخدام قراءة منخفضة المستوى (low-level read)، ثم يُعيدها كسلسلة نصية.

sysseek

يحرِّك مؤشر المجرى الذي استدعي معه إلى موضع محدَّد.

syswrite

يكتب السلسلة النصية المُمرَّرة إليه في المجرى الذي استُدعي معه باستخدام كتابة منخفض المستوى (low-level write). 

tell

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

to_i

يعد اسمًا بديلًا للتابع fileno.

to_io

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

tty?‎

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

ungetbyte

يعيد دفع (pushes) البايتات (الممررة كمعامل إليه) إلى المجرى الذي استُدعي معه، بحيث تعيدها القراءة التالية من المخزن المؤقت (buffer) لهذا المجرى. 

ungetc

يعيد دفع محرف واحد (الذي مُرِّر إليه) إلى المجرى الذي استُدعي معه، بحيث تعيده القراءة التالية من المخزن المؤقت (buffer). 

write

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

write_nonblock

يكتب السلسلة النصية المُمرَّرة إليه في المجرى الذي استُدعي معه باستخدام استدعاء النظام write(2)‎ بعد تعيين قيمة الراية O_NONBLOCK الخاصة بواصف الملف (file descriptor) الأساسي.

مصادر