الفرق بين المراجعتين ل"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
يكتب السلسلة النصية المعطاة في مجرى د/خ.