الفرق بين المراجعتين لصفحة: «Ruby/IO»
لا ملخص تعديل |
لا ملخص تعديل |
||
سطر 2: | سطر 2: | ||
[[تصنيف: Ruby]] | [[تصنيف: Ruby]] | ||
[[تصنيف: Ruby IO]] | [[تصنيف: Ruby IO]] | ||
الصننف <code>IO</code> هو أساس كل عمليات الإدخال والإخراج في روبي. مجرى د/خ (I/O stream) قد يكون مزدوج الاتجاه (''duplexed'')، ولذلك قد يستخدم أكثر من مجرى واحد من مجاري نظام التشغيل. | |||
الكثير من الأمثلة الواردة في في هذا القسم تستخدم الصنف <code>[[Ruby/File|File]]</code>، وهو االصنف الفرعي (subclass) القياسي الوحيد للصنف <code>IO</code>. الصنفان يرتبطان ارتباطًا وثيقًا. | الكثير من الأمثلة الواردة في في هذا القسم تستخدم الصنف <code>[[Ruby/File|File]]</code>، وهو االصنف الفرعي (subclass) القياسي الوحيد للصنف <code>IO</code>. الصنفان يرتبطان ارتباطًا وثيقًا. | ||
سطر 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/ | ===[[Ruby/IO/copy stream| copy_stream]]=== | ||
ينسخ المصدر المعطى | |||
===[[Ruby/IO/for fd| for_fd]]=== | |||
ينسخ | |||
===[[Ruby/IO/ | |||
مرادف للتابع <code>IO.new</code>. | مرادف للتابع <code>IO.new</code>. | ||
===[[Ruby/IO/foreach | foreach]]=== | ===[[Ruby/IO/foreach| foreach]]=== | ||
ينفذ الكتلة المعطاة على كل سطر في منفذ [[Ruby/IO|مجرى د/خ]] | ينفذ الكتلة المعطاة على كل سطر في منفذ [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/new | new]]=== | ===[[Ruby/IO/new| new]]=== | ||
يُعيد كائنًا جديدًا من النوع <code>[[Ruby/IO|IO]]</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.open</code> مرادفاً للتابع <code>[[Ruby/IO/new|::new]]</code>. | ||
===[[Ruby/IO/pipe | pipe]]=== | ===[[Ruby/IO/pipe| pipe]]=== | ||
ينشئ زوجًا من مداخل الأنابيب (pipe endpoints) (متصلة ببعضها البعض) ثم يعيدها على هيئة [[Ruby/Array|مصفوفة]] ثنائية من [[Ruby/IO|مجاري د/خ]] | ينشئ زوجًا من مداخل الأنابيب (pipe endpoints) (متصلة ببعضها البعض) ثم يعيدها على هيئة [[Ruby/Array|مصفوفة]] ثنائية من [[Ruby/IO|مجاري د/خ]] | ||
===[[Ruby/IO/popen | popen]]=== | ===[[Ruby/IO/popen| popen]]=== | ||
ينفذ التعليمة المعطاة | ينفذ التعليمة المعطاة على شكل عملية فرعية | ||
===[[Ruby/IO/read | read]]=== | ===[[Ruby/IO/read| read]]=== | ||
يفتح الملف، ثم يتموضع اختياريا | يفتح الملف، ثم يتموضع اختياريا عند الموضع المعطى | ||
===[[Ruby/IO/readlines | readlines]]=== | ===[[Ruby/IO/readlines| readlines]]=== | ||
يقرأ كامل الملف المحدد | يقرأ كامل الملف المحدد | ||
===[[Ruby/IO/select | select]]=== | ===[[Ruby/IO/select| select]]=== | ||
يستدعي select(2). ويقوم بمراقبة [[Ruby/Array|المصفوفة]] المعطاة المكونة من [[Ruby/IO| | يستدعي <code>select(2)</code>. ويقوم بمراقبة [[Ruby/Array|المصفوفة]] المعطاة المكونة من [[Ruby/IO|مجاري د/خ]] (كائنات <code>IO</code>)، وينتظر حتى يكون أحدها جاهزًا للقراءة، وجاهزا للكتابة، ويكون لها استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد [[Ruby/Array|مصفوفة]] تحتوي على [[Ruby/Array|مصفوفات]] مكونة من [[Ruby/IO|مجاري د/خ]] | ||
===[[Ruby/IO/sysopen | sysopen]]=== | ===[[Ruby/IO/sysopen| sysopen]]=== | ||
يفتح المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]] | يفتح المسار المحدد، ثم يعيد واصف الملف الأساسي ك[[Ruby/Integer|عدد صحيح]]. | ||
===[[Ruby/IO/ | ===[[Ruby/IO/try convert| try_convert]]=== | ||
يحاول تحويل الوسيط | يحاول تحويل الوسيط المعطى إلى [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/write | write]]=== | ===[[Ruby/IO/write| write]]=== | ||
يفتح الملف، ويتموضع | يفتح الملف، ويتموضع اختياريا عند الإزاحة <code>offset</code> المعطاة | ||
===[[Ruby/IO/ | |||
مجرى الإخراج النصي | == توابع النسخة العامة (Public Instance Methods) == | ||
===[[Ruby/IO/advise | advise]]=== | |||
يعلن عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد | ===[[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>true</code> إن كان واصف الملف الأساسي ل[[Ruby/IO|مجرى د/خ]] سيُغله تلقائياً عند الانتهاء منه، وإلا سيُعيد <code>false</code>. | ||
===[[Ruby/IO/binmode | binmode]]=== | ===[[Ruby/IO/binmode| binmode]]=== | ||
يضع [[Ruby/IO|مجرى د/خ]] | يضع [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode). | ||
===[[Ruby/IO/binmode-3F | binmode?]]=== | ===[[Ruby/IO/binmode-3F| binmode?]]=== | ||
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في الوضع الثنائي (binary mode). | ||
===[[Ruby/IO/bytes | bytes]]=== | ===[[Ruby/IO/bytes| bytes]]=== | ||
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each byte|each_byte]]</code>. | |||
===[[Ruby/IO/chars | chars]]=== | |||
===[[Ruby/IO/chars| chars]]=== | |||
===[[Ruby/IO/close | close]]=== | مرادف مُتجاوز للتابع <code>[[Ruby/IO/each char|each_char]]</code>. | ||
يغلق [[Ruby/IO|مجرى د/خ]] | |||
===[[Ruby/IO/ | ===[[Ruby/IO/close| close]]=== | ||
يغلق [[Ruby/IO|مجرى د/خ]]، وينقل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل. | |||
===[[Ruby/IO/close on exec-3D| close_on_exec=]]=== | |||
يعين الراية close-on-exec. | يعين الراية close-on-exec. | ||
===[[Ruby/IO/ | ===[[Ruby/IO/close on exec-3F| close_on_exec?]]=== | ||
يُعيد القيمة <code>true</code> إن كانت الراية close_on_exec الخاصة ب[[Ruby/IO|مجرى د/خ]] <code> | يُعيد القيمة <code>true</code> إن كانت الراية close_on_exec الخاصة ب[[Ruby/IO|مجرى د/خ]] تساوي <code>true</code>. | ||
===[[Ruby/IO/ | ===[[Ruby/IO/close read| close_read]]=== | ||
يغلق طرف القراءة الخاص بمجرى [[Ruby/IO|مجرى د/خ]] | يغلق طرف القراءة الخاص بمجرى [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/ | ===[[Ruby/IO/close write| close_write]]=== | ||
يغلق طرف الكتابة الخاص ب[[Ruby/IO|مجرى د/خ]] | يغلق طرف الكتابة الخاص ب[[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/closed-3F| closed?]]=== | |||
يعيد القيمة <code>true</code> ان كان [[Ruby/IO|مجرى د/خ]] مغلقًا | يعيد القيمة <code>true</code> ان كان [[Ruby/IO|مجرى د/خ]] مغلقًا | ||
===[[Ruby/IO/codepoints| codepoints]]=== | |||
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each codepoint|each_codepoint]]</code>. | |||
===[[Ruby/IO/each | each]]=== | ===[[Ruby/IO/each| each]]=== | ||
ينفذ الكتلة المعطاة | ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/ | ===[[Ruby/IO/each byte| each_byte]]=== | ||
يستدعي الكتلة المعطاة | يستدعي الكتلة المعطاة على كل بايت (0..255) في [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/ | ===[[Ruby/IO/each char| each_char]]=== | ||
يستدعي الكتلة المعطاة على لكل حرف في [[Ruby/IO|مجرى د/خ]] | |||
===[[Ruby/IO/ | ===[[Ruby/IO/each codepoint| each_codepoint]]=== | ||
ينفذ التابع الكتلة المعطاة، مع تمرير الرمز العددي (Integer ordinal) لكل حرف من الحروف الموجودة في [[Ruby/IO|مجرى د/خ]]، حيث يمرر رمز اليونيكود (codepoint) كوسيط. | |||
===[[Ruby/IO/each line| each_line]]=== | |||
ينفذ الكتلة المعطاة على كل سطر في [[Ruby/IO|مجرى د/خ]] | |||
===[[Ruby/IO/eof | eof]]=== | ===[[Ruby/IO/eof| eof]]=== | ||
يُعيد القيمة true إن كان [[Ruby/IO|مجرى د/خ]] | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف، | ||
===[[Ruby/IO/eof-3F| eof?]]=== | |||
يُعيد | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] في نهاية الملف، | ||
===[[Ruby/IO/ | ===[[Ruby/IO/external encoding| external_encoding]]=== | ||
يُعيد [[Ruby/Encoding|الترميز]] الخاص بالملف. | |||
===[[Ruby/IO/ | ===[[Ruby/IO/fcntl| fcntl]]=== | ||
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في [[Ruby/IO|مجاري د/خ]] | |||
===[[Ruby/IO/fdatasync| fdatasync]]=== | |||
يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] | يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص. | ||
===[[Ruby/IO/ | ===[[Ruby/IO/fileno| fileno]]=== | ||
يُعيد عددا صحيحا يمثل واصف الملف الرقمي ل[[Ruby/IO|مجرى د/خ]] | |||
===[[Ruby/IO/ | ===[[Ruby/IO/flush| flush]]=== | ||
ينقل (Flushes) أي بيانات مخزنة في [[Ruby/IO|مجرى د/خ]] إلى نظام التشغيل | |||
===[[Ruby/IO/ | ===[[Ruby/IO/fsync| fsync]]=== | ||
يكتب على الفور جميع البيانات المخزنة في [[Ruby/IO|مجرى د/خ]] على القرص. | |||
===[[Ruby/ | ===[[Ruby/IO/getbyte| getbyte]]=== | ||
يحصل على البايت (0..255) التالي من <nowiki/>[[Ruby/IO|مجرى د/خ]] . ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف. | |||
===[[Ruby/ | ===[[Ruby/IO/getc| getc]]=== | ||
يقرأ [[Ruby/String|سلسلة نصية]] مُؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويُعيد <code>nil</code> إن استُدعي عند نهاية الملف. | |||
===[[Ruby/IO/ | ===[[Ruby/IO/gets| gets]]=== | ||
يقرأ "السطر" الموالي من [[Ruby/IO|مجرى د/خ]]. | |||
===[[Ruby/IO/ | ===[[Ruby/IO/inspect| inspect]]=== | ||
يُعيد [[Ruby/String|سلسلة نصية]] تصف [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | |||
===[[Ruby/IO/ | ===[[Ruby/IO/internal encoding| internal_encoding]]=== | ||
يعيد [[Ruby/Encoding|الترميز]] الخاص ب[[Ruby/String|السلسلة النصية]] الداخلية في حالة تحديد التحويل. | |||
===[[Ruby/IO/ | ===[[Ruby/IO/ioctl| ioctl]]=== | ||
يوفر آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة [[Ruby/IO|مجاري د/خ]] | |||
===[[Ruby/IO/ | ===[[Ruby/IO/isatty| isatty]]=== | ||
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] مربوطا بجهاز طرفي (tty)، أو يعيد <code>false</code> خلاف ذلك. | |||
===[[Ruby/IO/lineno| lineno]]=== | |||
يعيد رقم السطر الحالي في [[Ruby/IO|مجرى د/خ]]. | |||
===[[Ruby/IO/ | ===[[Ruby/IO/lineno-3D| lineno=]]=== | ||
يعيّن يدويًا رقم السطر الحالي ويعطيه القيمة المحددة. | |||
===[[Ruby/IO/ | ===[[Ruby/IO/lines| lines]]=== | ||
مرادف مُتجاوز للتابع <code>[[Ruby/IO/each line|each_line]]</code>. | |||
===[[Ruby/IO/ | |||
===[[Ruby/IO/pid| pid]]=== | |||
===[[Ruby/IO/ | يُعيد معرف العملية (PID) الخاص بالعملية الفرعية (child process) المرتبطة ب[[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/pos| pos]]=== | |||
===[[Ruby/IO/ | يُعيد الإزاحة (offset) الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/pos-3D| pos=]]=== | |||
===[[Ruby/IO/ | يسعى إلى التموضع عند الإزاحة المحددة (بالبايت) في [[Ruby/IO|مجرى د/خ]] | ||
يقرأ <code> | ===[[Ruby/IO/pread| pread]]=== | ||
===[[Ruby/IO/ | يقرأ <code>maxlen</code> بايت من [[Ruby/IO|مجرى د/خ]] | ||
===[[Ruby/IO/print| print]]=== | |||
===[[Ruby/IO/ | يكتب الكائن(ات) المعطاة في [[Ruby/IO|مجرى د/خ]]. ثم يُعيد <code>nil</code>. | ||
===[[Ruby/IO/printf| printf]]=== | |||
===[[Ruby/IO/ | ينسق ويكتب في [[Ruby/IO|مجرى د/خ]]، | ||
===[[Ruby/IO/putc| putc]]=== | |||
===[[Ruby/IO/ | إن كان الوسيط المعطى <code>obj</code> <nowiki/>[[Ruby/Numeric|عددًا]]، فسيكتب التابع <code>putc</code> الحرف الذي رمزه هو البايت الأقل دلالة (least-significant byte) في<code>obj</code>. أما إن كان <code>obj</code> سلسلة نصية، فسيكتب أول حرف من <code>obj</code> في <nowiki/>[[Ruby/IO|مجرى د/خ]]. خلاف ذلك، سيُطلق الاستثناء <code>TypeError</code>. | ||
===[[Ruby/IO/puts| puts]]=== | |||
===[[Ruby/IO/ | يكتب الكائن(اات) المعطاة في [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/pwrite| pwrite]]=== | |||
يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] عند موضع الإزاحة المعطى. | |||
===[[Ruby/IO/read-i| read]]=== | |||
يقرأ عددا من البايتات من [[Ruby/IO|مجرى د/خ]]. | |||
===[[Ruby/IO/read nonblock| read_nonblock]]=== | |||
يقرأ على الأكثر <code>maxlen</code> بايتًا من [[Ruby/IO|مجرى د/خ]]. | |||
===[[Ruby/IO/readbyte| readbyte]]=== | |||
يقرأ البايت كما يفعل التابع <code>getbyte</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | |||
===[[Ruby/IO/readchar| readchar]]=== | |||
يقرأ [[Ruby/String|سلسلة نصية]] مؤلفة من حرف واحد من [[Ruby/IO|مجرى د/خ]]. ويطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | |||
===[[Ruby/IO/readline| readline]]=== | |||
يقرأ سطرًا كما يفعل التابع <code>gets</code>، إلا أنه يُطلق الاستثناء <code>EOFError</code> عند نهاية الملف. | |||
===[[Ruby/IO/readlines-i| readlines]]=== | |||
يقرأ كل الأسطر الموجودة في [[Ruby/IO|مجرى د/خ]]، ثم يعيدها في [[Ruby/Array|مصفوفة]]. | |||
===[[Ruby/IO/readpartial| readpartial]]=== | |||
يقرأ <code>maxlen</code>بايتًا على الأكثر من [[Ruby/IO|مجرى د/خ]]. | |||
===[[Ruby/IO/reopen| reopen]]=== | |||
يربط بين [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه وبين [[Ruby/IO|مجرى د/خ]] المعطى. | |||
===[[Ruby/IO/rewind| rewind]]=== | |||
يُموضِع [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه عند بداية الإدخال، مع تعيين <code>[[Ruby/IO/lineno|lineno]]</code> عند القيمة صفر. | |||
===[[Ruby/IO/seek| seek]]=== | |||
يسعى إلى التموضع عند الإزاحة المعطاة <code>anInteger</code> في [[Ruby/IO|مجرى د/خ]] | |||
===[[Ruby/IO/set encoding| set_encoding]]=== | |||
في حال تمرير وسيط واحد، فستوسم السلسلة النصية المقروءة من <nowiki/>[[Ruby/IO|مجرى د/خ]] <nowiki/>[[Ruby/Encoding|بالترميز]] المحدد. | |||
===[[Ruby/IO/stat| stat]]=== | |||
يُعيد معلومات الحالة ل[[Ruby/IO|مجرى د/خ]] الذي استُدعي معه على هيئة كائن من النوع <code>File::Stat</code>. | |||
===[[Ruby/IO/sync| sync]]=== | |||
يُعيد قيمة راية وضع المزامنة "sync mode" الحالية ل[[Ruby/IO|مجرى د/خ]]. | |||
===[[Ruby/IO/sync-3D| sync=]]=== | |||
يضبط قيمة راية وضع المزامنة “sync mode' عند إحدى القيمتين <code>true</code> أو <code>false</code>. | |||
===[[Ruby/IO/sysread| sysread]]=== | |||
يقرأ عددا من البايتات من [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | |||
===[[Ruby/IO/sysseek| sysseek]]=== | |||
يسعى إلى التموضع عند الإزاحة المعطاة. | |||
===[[Ruby/IO/syswrite| syswrite]]=== | |||
يكتب [[Ruby/String|السلسلة النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | |||
===[[Ruby/IO/tell| tell]]=== | |||
يُعيد الإزاحة الحالية (بالبايت) في [[Ruby/IO|مجرى د/خ]]. | |||
===[[Ruby/IO/to i| to_i]]=== | |||
مرادف للتابع <code>[[Ruby/IO/fileno|fileno]]</code>. | |||
===[[Ruby/IO/ | ===[[Ruby/IO/to io| to_io]]=== | ||
يعيد [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه | يعيد [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/tty-3F | tty?]]=== | ===[[Ruby/IO/tty-3F| tty?]]=== | ||
يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] | يُعيد القيمة <code>true</code> إن كان [[Ruby/IO|مجرى د/خ]] مربوطا بطرفية (tty)، أو يعيد <code>false</code> خلاف ذلك. | ||
===[[Ruby/IO/ungetbyte | ungetbyte]]=== | ===[[Ruby/IO/ungetbyte| ungetbyte]]=== | ||
يدفع (Pushes back) البايتات (التي تم تمريرها كوسيط) إلى [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه | يدفع (Pushes back) البايتات (التي تم تمريرها كوسيط) إلى [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/ungetc | ungetc]]=== | ===[[Ruby/IO/ungetc| ungetc]]=== | ||
يدفع حرفا واحدا (المُمرر كوسيط) في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه | يدفع حرفا واحدا (المُمرر كوسيط) في [[Ruby/IO|مجرى د/خ]] الذي استُدعي معه. | ||
===[[Ruby/IO/write-i | write]]=== | ===[[Ruby/IO/write-i| write]]=== | ||
يكتب [[Ruby/String|السلاسل النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]] | يكتب [[Ruby/String|السلاسل النصية]] المعطاة في [[Ruby/IO|مجرى د/خ]]. | ||
===[[Ruby/IO/ | ===[[Ruby/IO/write nonblock| write_nonblock]]=== | ||
يكتب [[Ruby/String|السلسلة النصية]] المعطاة في | يكتب [[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
بايت من مجرى د/خ
يكتب الكائن(ات) المعطاة في مجرى د/خ. ثم يُعيد 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
يكتب السلسلة النصية المعطاة في مجرى د/خ.