الصنف IO
في روبي
الصنف IO
هو أساس كل عمليات الإدخال والإخراج في روبي. المجرى I/O قد يكون مزدوج الاتجاه (duplexed)
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 أو spann # process للتواصل مع العمليات الفرعية غبر مجرى د/خ IO
.
ستُحول روبي أسماء المسارات بما يتوافق مع كل نظام تشغيل إن أمكن. على سبيل المثال، في نظام ويندوز، سيُفتح اسم الملف "/gumby/ruby/test.rb"
باعنتباره "\gumby\ruby\test.rb"
. عند تحديد اسم ملف بنمط ويندوز في سلسلة نصية في روبي، تذكر أن تُخلّص (escape) الخطوط المائلة العكسية، مثلا:
"C:\\gumby\\ruby\\test.rb"
سوف نستخدم في الأمثلة الشُرط المائلة للأمام على نمط اليونيكس؛ يمكن استخدام File::ALT_SEPARATOR للحصول على الحرف الفاصل الخاص بنظام التشغيل.
توفر الثابتة العامة ARGF
(يمكن الدخول إليها عبر $<
) مجرًى مشابهًا لمجرى د/خ IO، والذي يسمح بالوصول إلى كافة الملفات المذكورة في سطر الأوامر (أو في المجرى STDIN في حال لم يذكر أي ملف). تم توفير التابع ARGF#path
ومرادفه ARGF#filename
للوصول إلى اسم الملف الذي تتم قراءته حاليًا.
توفر الملحقة io/console توابع للتفاعل مع وحدة التحكم (console). يمكن الوصول إلى وحدة التحكم من المجرى IO.console، أو مجاري د/خ (IO
) القياسي input و output و error.
استيراد io/console يؤدي إلى إضافة التوابع التالية:
وحدة التحكم IO ::
IO # الخام
IO # الخام!
IO # طهي
IO # المطبوخ!
IO # getch
IO # صدى =
IO # صدى؟
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
يفتح التابع binread
الملف، ثم يتموضع اختياريا في الموضع المعطى offset
(انظر فقرة البنية العامة)، ثم يُعيد length
بايت (تساوي قيمته الافتراضية طول بقية الملف). يضمن التابع binread
أن يُغلق الملف قبل العودة. وضع الفتح سيكون "rb:ASCII-8BIT".
binwrite
التابع binwrite
مشابه للتابع IO.write
X، ما عدا أنه يفتح الملف في الوضع الثنائي (binary mode) وبالترميز ASCII-8BIT ("wb: ASCII-8BIT").
copy_stream
ينسخ التابع ::copy_stream
المصدر المعطى src
إلى dst
(انظر فقرة البنية العامة). الوسيطان src
و dst
يمكن أن يكونا إما اسماء ملفات، أو كائن مشابهة للصنف IO. يجب أن يكون للكائنات المشابهة لـ IO بالنسبة للوسيط src
التابع readpartial
أو read
. كما يجب أن يكون للكائنات المشابهة لـ IO بالنسبة للوسيط dst
التابع write
. (يمكن استخدام الآليات خاصة، مثل استدعاء نظام sendfile، في بعض الحالات المناسبة.)
for_fd
مرادف للتابع IO.new
.
foreach
ينفذ التابع foreach
الكتلة المعطاة على كل سطر في منفذ مجرى د/خ المسمى، حيث يتم فصل الأسطر بواسطة sep
.
new
يُعيد التابع new
كائنًا جديدًا من النوع IO
لواصف الملف (file descriptor) المعطى fd
(انظر فقرة البنية العامة) والوضع mode
. يمكن استخدام opt
لتحديد أجزاء من mode
بطريقة أكثر قابلية للقراءة. انظر أيضًا صفحتي ::sysopen
و ::for_fd
.
open
عند عدم تمرير كتلة، فسيكون التابع IO.open
مرادفاً للتابع ::new
. أما في حال تمرير الكتلة البرمجية، فسيُمرّر إليها io
(انظر فقرة البنية العامة) كوسيط، وسيتم إغلاق مجرى د/خ (IO
) تلقائيًا عند إنهاء الكتلة. في هذه الحالة، سيعيد التابع ::open
قيمة الكتلة.
pipe
ينشئ التابع pipe
زوجًا من مداخل الأنابيب (pipe endpoints) (متصلة ببعضها البعض) ثم يعيدها على هيئة مصفوفة ثنائية من مجاري د/خ IO
: [
read_io
و write_io
]
.
popen
ينفذ التابع popen
التعليمة المعطاة (انظر فقرة البنية العامة) على شكل عملية فرعي (subprocess)؛ سيتم توصيل المدخلات والمخرجات القياسية للعملية الفرعية إلى مجرى د/خ (IO
) المُعاد.
read
يفتح التابع read
الملف، ثم يتموضع اختياريا في الموضع المعطى offset
(انظر فقرة البنية العامة)، ثم يُعيد length
بايت (تساوي قيمته الافتراضية طول بقية الملف). يضمن التابع read
أن يُغلق الملف قبل العودة.
readlines
يقرأ التابع readlines
كامل الملف المحدد بواسطة name
(انظر فقرة البنية العامة) سطرًا سطرًا، ويعيد تلك السطور في مصفوفة. تُفصل السطو بواسطة sep
.
select
يستدعي التابع select
select(2). ويقوم بمراقبة المصفوفة المعطاة المكونة من مجرى د/خ (كائنات IO
)، وينتظر حتى يكون أحد كائنات IO
جاهزًا للقراءة، وجاهزا للكتابة، ويكون لها استثناءات معلقة (pending exceptions) على التوالي، ثم يعيد مصفوفة تحتوي على مصفوفات مكونة من مجرى د/خ تلك كائنات IO
السابقة. ستعاد القيمة nil
إذا تم إعطاء قيمة للوسيط الاختياري timeout
(انظر فقرة البنية العامة)، ولم يكن أي من مجاري د/خ كائن IO
جاهزاً خلال timeout
ثانية.
sysopen
يفتح التابع sysopen
المسار المحدد، ثم يعيد واصف الملف الأساسي كعدد صحيح Integer
.
try_convert
يحاول التابع try_convert
تحويل الوسيط obj
(انظر فقرة البنية العامة) إلى مجرى د/خ (IO
)، باستخدام التابع #to_io
. تم يعيد مجرى د/خ IO
المُحوّل، أو يعيد nil
إذا تعذر تحويل obj
لأي سبب من الأسباب.
write
يفتح التابع write
الملف، ويتموضع (seeks) اختياريا عند الإزاحة offset
المعطاة (انظر فقرة البنية العامة)، ثم يكتب string
، ثم يعيد طول السلسلة النصية المكتوبة. يضمن التابع write
أن يُغلق الملف قبل العودة. إذا لم يتم إعطاء offset
في وضع الكتابة (write mode)، سيتم اقتطاع الملف. خلاف ذلك، لا يُقتطع.
<<
مجرى الإخراج النصي String
- يكتب obj
(انظر فقرة البنية العامة) في المجرى ios
. سيتم تحويل obj
إلى سلسلة نصية باستخدام to_s
.
advise
يعلن التابع advise
عن نية الوصول إلى البيانات من الملف الحالي وفق نمط محدد. على أنظمة التشغيل التي لا تدعم استدعاء النظام posix_fadvise(2)
، هذه التابع عبارة عن عملية فارغة (no-op).
autoclose=
يُعيّن التابع autoclose=
قيمة راية الإغلاق التلقائي.
autoclose?
يُعيد التابع autoclose?
القيمة true
إن كان واصف الملف الأساسي لمجرى د/خ ios
سيتم إغلاقه تلقائياً عند الانتهاء منه، وإلا سيُعيد false
.
binmode
يضع التابع binmode
مجرى د/خ ios
في الوضع الثنائي (binary mode). بمجرد أن يصير المجرى في الوضع الثنائي، فلا يمكن إعادته إلى الوضع غير الثنائي.
binmode?
يُعيد التابع binmode?
القيمة true
إن كان مجرى د/خ ios
(انظر فقرة البنية العامة) في الوضع الثنائي (binary mode).
bytes
التابع bytes
مرادف مُتجاوز للتابع each_byte
.
chars
التابع chars
مرادف مُتجاوز للتابع each_char
.
close
يغلق التابع close
مجرى د/خ ios
(انظر فقرة البنية العامة)، ويرسل (flushes) أي كتابات مُعلّقة إلى نظام التشغيل. المجرى لن يكون متاحًا لأي عمليات إضافية على البيانات؛ وفي حال محاولة إجراء مثل تلك العمليات، فسيُطللق الخطأ IOError
. يتم إغلاق مجاري د/خ تلقائيًا من طرف جامع المهملات (garbage collector).
close_on_exec=
يعين التابع close_on_exec=
الراية close-on-exec.
close_on_exec?
يُعيد التابع close_on_exec?
القيمة true
إن كانت الراية close_on_exec الخاصة بمجرى د/خ ios
تساوي false.
close_read
يغلق التابع close_read
طرف القراءة الخاص بمجرى مجرى د/خ مزدوج (duplex) (على سبيل المثال، إن كان يحتوي على مجرى قراءة وكتابة، مثل الأنابيب [pipes]). سيُطلق الاستثناء IOError
إن لم يكن المجرى مزدوجًا.
close_write
يغلق التابع close_write
طرف الكتابة الخاص بمجرى د/خ المزدوج [duplex] (على سبيل المثال، إن كان يحتوي على مجرى قراءة وكتابة، مثل الأنابيب [pipes]). سيُطلق الاستثناء IOError
إذا لم يكن المجرى مزدوجًا.
closed?
يعيد التابع closed?
القيمة true
ان كان مجرى د/خ مغلقًا ios
تماما (بالنسبة الى المجاري المزدوجة - duplex streams -، ينبغي أن يكون القارئ والكاتب مغلقين)، أو سيعيد false
خلاف ذلك.
codepoints
التابع codepoints
هو مرادف مُتجاوز للتابع each_codepoint
.
each
ينفذ التابع each
الكتلة المعطاة لكل سطر في مجرى د/خ ios
، حيث تُفصل الأسطر بواسطة sep
. يجب أن يكون مجرى د/خ ios
مفتوحا في وضعية القراءة، أو سيُطلق الاستثناء IOError
.
each_byte
يستدعي التابع each_byte
الكتلة المعطاة مرة لكل بايت (0..255) في مجرى د/خ ios
، مع تمرير البايت كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء IOError
.
each_char
يستدعي التابع each_char
الكتلة المعطاةة مرة لكل حرف في مجرى د/خ ios
، مع تمرير الحرف كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء IOError
.
each_codepoint
يمرر التابع each_codepoint
رقم Integer
كل حرف (Integer ordinal) في مجرى د/خ ios
، مع تمرير رمز اليونيكود (codepoint) كوسيط. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء IOError
.
each_line
ينفذ التابع each_line
الكتلة المعطاة لكل سطر في مجرى د/خ ios
، حيث تُفصل الأسطر بواسطة sep
. يجب أن يكون مجرى د/خ ios
مفتوحًا في وضعية القراءة أو سيُرفع استثناء IOError
.
eof
يُعيد التابع eof
القيمة true إن كان مجرى د/خ ios
في نهاية الملف، ما يعني أنه لا توجد بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء IOError
.
eof?
يُعيد التابع eof?
القيمة true إن كان مجرى د/خ ios
في نهاية الملف، ما يعني أنه لا لم تعد هناك بيانات أخرى للقراءة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء IOError
.
external_encoding
يُعيد التابع external_encoding
الترميز Encoding
الذي يمثل ترميز الملف. إن كان مجرى د/خ io
في وضع الكتابة ولم يُحدّد أي ترميز، فستعاد nil
.
fcntl
يوفر التابع fcntl
آلية لإصدار أوامر منخفضة المستوى للتحكم في مجاري د/خ I/O الموجهة بالملفات، أو الاستعلام عنها. الوسائط والنتائج تعتمد على النظام المُستخدم. إن كان الوسيط arg
(انظر فقرة البنية العامة) عددًا، فستُمرر قيمته مباشرةً. وإن كان سلسلة نصية، فستُفسر على أنها تسلسل ثنائي من البايتات (قد يكون التابع Array#pack
طريقة مفيدة لإنشاء مثل هذه السلسلة). على منصات اليونيكس، راجع صفحة fcntl(2)
لمزيد من التفاصيل. هذا التابع ليس مُتاح على جميع المنصات.
fdatasync
يكتب التابع fdatasync
على الفور جميع البيانات المخزنة في مجرى د/خ ios
في القرص.
fileno
يُعيد التابع fileno
عددا صحيحا يمثل واصف الملف الرقمي لمجرى د/خ ios
.
flush
يرسل (Flushes) التابع flush
أي بيانات مخزنة في مجرى د/خ ios
إلى نظام التشغيل (لاحظ أن هذا لا يشمل إلا التخزين المؤقت الداخلي لروبي؛ وقد يقوم نظام التشغيل بتخزين البيانات أيضًا).
fsync
يكتب التابع fsync
على الفور جميع البيانات المخزنة في مجرى د/خ ios
في القرص. لاحظ أن fsync
يختلف عن استخدام IO#sync=
. حيث يضمن الأخير أن تُرسل البيانات من المخازن المؤقتة (buffers) لروبي، ولكنه لا يضمن أنّ نظام التشغيل سيكتبها بالفعل في القرص.
getbyte
يحصل التابع getbyte
على البايت (8-bit byte) الموالي (0..255) من مجرى د/خ ios
. ويُعيد nil
إن استُدعي عند نهاية الملف.
getc
يقرأ التابع getc
سلسلة نصية مُؤلفة من حرف واحد من مجرى د/خ ios
. ويُعيد nil
إن استُدعي عند نهاية الملف.
gets
يقرأ التابع gets
"السطر" الموالي من مجرى د/خ. السطور مفصولة بواسطة sep
. إن كان الفاصل يساوي nil
، فسيقرأ المحتويات بالكامل، أما إن كان الفاصل معدوم الطول، فستُقرؤ فقرة في كل مرة من مجرى الإدخال (تُفصل الفقرات بسطرين منفصلين). يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُرفع استثناء IOError
. سيُعاد السطر المقروء، وستُعين قيمته إلى $_
. ستعاد القيمة nil
إن تم استُدعي التابع gets
عند نهاية الملف. إن كان الوسيط الأول عددًا صحيحًا أو إن أعطي الوسيط الاختياري الثاني، فلن تكون السلسلة النصية المعادة أطول من القيمة المحددة من حيث عدد البايتات (bytes).
inspect
يُعيد التابع inspect
سلسلة نصية تصف مجرى د/خ الذي استُدعي معه IO
.
internal_encoding
يعيد التابع internal_encoding
الترميز Encoding
الخاص بالسلسلة النصية الداخلية في حالة تحديد التحويل. على خلاف ذلك سيُعيد nil
.
ioctl
يوفر التابع ioctl
آلية لإصدار أوامر منخفضة المستوى للتحكم في أجهزة مجاري د/خ I/O، أو الاستعلام عنها. الوسائط والنتائج تعتمد على النظام المُستخدم. إن كان الوسيط arg
(انظر فقرة البنية العامة) عددًا، فستُمرر قيمته مباشرةً. وإن كان سلسلة نصية، فستُفسر على أنها تسلسل ثنائي من البايتات لاستخدامه في منصات اليونيكس، راجع صفحة ioctl(2)
لمزيد من التفاصيل. التابع ioctl
غير متاح على جميع المنصات.
isatty
يُعيد التابع isatty
القيمة true
إن كان مجرى د/خ ios
مربوطا بجهاز طرفي (tty)، أو يعيد false
خلاف ذلك.
lineno
يعيد التابع lineno
رقم السطر الحالي في مجرى د/خ ios
. يجب أن يكون المجرى مفتوحا في وضعية القراءة. يحسب التابع lineno
عدد المرات التي يتم فيها استدعاء gets
بدلاً من عدد السطور الجديدة التي تمت مصادفتها. ستختلف القيمتان إن استُدعي gets
مع فاصل آخر غير فاصل السطر الجديد.
lineno=
يعيّن التابع lineno=
يدويًا رقم السطر الحالي ويعطيه القيمة المحددة. لن تُحدّث $.
إلا عند القراءة التالية.
lines
التابع lines
مرادف مُتجاوز للتابع each_line
.
pid
يُعيد التابع pid
معرف العملية (PID) الخاص بالعملية الفرعية (child process) تامرتبطة بمجرى د/خ ios
. سيتم تعيينه بواسطة التابع IO.popen
.
pos
يُعيد التابع pos
الإزاحة (offset) الحالية (بالبايت) في مجرى د/خ ios
.
pos=
يسعى التابع pos=
إلى التموضع عند الإزاحة المحددة (بالبايت) في مجرى د/خ ios
. ليس مضمونا أن يكون التموضع صحيحًا عندما يكون مجرى د/خ ios
في الوضع النصي (textmode).
pread
يقرأ التابع pread
maxlen
(انظر فقرة البنية العامة) بايت من مجرى د/خ ios
باستخدام استدعاء النظام pread، ثم يُعيدها كسلسلة نصية من غير تعديل إزاحة (offset) الواصف الأساسي. هذا مفيد مقارنة بالجمع بين #seek
و #read
في كونه ذريًا (atomic)، مما يسمح لعدة مهام فرعية/عمليات بالتشارك في نفس مجرى د/خ IO
لقراءة الملف في مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين من طبقة مجرى د/خ IO
. في حال إعطاء الوسيط الاختياري outbuf
(انظر فقرة البنية العامة)، فينبغي أن يشير إلى سلسلة نصية String
، والتي ستتلقى البيانات. سيُطلق استثناء SystemCallError
عند الخطأ، أو EOFError
عند نهاية الملف، أو NotImplementedError
إن لم يكن نظام التشغيل يدعم استدعاء النظام.
يكتب التابع print
الكائن(ات) المعطاة في مجرى د/خ ios
. ثم يُعيد nil
.
printf
ينسق التابع printf
ويكتب في مجرى د/خ ios
، حيث يحول الوسائط المعطاة وفق سلسلة التنسيق الممررة format_string (انظر فقرة البنية العامة). انظر صفحة Kernel#sprintf
لمزيد من التفاصيل.
putc
إن كان الوسيط المعطى obj
(انظر فقرة البنية العامة) عددًا Numeric
، فسيكتب التابع putc
الحرف الذي يكون رمزه هو البايت الأقل دلال (least-significant byte) من obj
. وإن كان obj
سلسلة نصية String
، فسيكتب أول حرف من obj
في مجرى د/خ ios
. خلاف ذلك، سيُطلق الاستثناء TypeError
.
puts
يكتب التابع puts
الكائن(اات) المعطى في مجرى د/خ ios
. ويكتب سطرًا جديدا بعد أي سطر لا ينتهي بالفعل بمحرف السطر الجديد. ثم يعيد nil
.
pwrite
يكتب التابع pwrite
السلسلة النصية المعطاة (انظر فقرة البنية العامة) في مجرى د/خ ios
عند موضع الإزاحة offset
باستخدام استدعاء النظام pwrite (). هذا مفيد مقارنة بالجمع بين #seek
و #write
في كونه ذريًا (atomic)، مما يسمح لعدة مهام فرعية/عمليات بالتشارك في نفس مجرى د/خ IO
لقراءة الملف من مواضع مختلفة. هذا سيتجاوز أي مساحة تخزين مؤقت للمستخدمين من طبقة مجرى د/خ IO
. سيعيد عدد البايتات المكتوبة. وسيُطلق الاستثناء SystemCallError
في حال حدوث خطأ، أو NotImplementedError
إذا لم يكن نظام الشغيل يدعم استدعاء النظام.
read
يقرأ التابع read
length
بايتًا (انظر فقرة البنية العامة) من مجرى د/خ.
read_nonblock
يقرأ التابع read_nonblock
على الأكثر maxlen
(انظر فقرة البنية العامة) بايتًا من مجرى د/خ ios
باستخدام استدعاء النظام read(2) بعد تعيين O_NONBLOCK في واصف الملف (file descriptor) الأساسي.
readbyte
يقرأ التابع readbyte
البايت كما يفعل التابع IO#getbyte
، إلا أنه يُطلق الاستثناء EOFError
على نهاية الملف.
readchar
يقرأ التابع readchar
سلسلة نصية مؤلفة من حرف واحد من مجرى د/خ ios
. ويطلق الاستثناء EOFError
عند نهاية الملف.
readline
يقرأ التابع readline
سطرًا كما يفعل التابع IO#gets
، إلا أنه يُطلق الاستثناء EOFError
عند نهاية الملف.
readlines
يقرأ التابع readlines
كل الأسطر الموجودة في مجرى د/خ ios
، ثم يعيدها في مصفوفة. يتم فصل الأسطر بالوسيط الاختياري sep
(انظر فقرة البنية العامة). إن كان الوسيط sep
يساوي nil
، فسسيُعاد بقية المجرى كتسجيلة (record) واحدة. إن كان الوسيط الأول عددًا صحيحًا، أو إن أعطي الوسيط الاختياري الثاني، فلن تكون السلسلة النصية المعادة أطول من حيث عدد البايتات من القيمة المحددة. يجب أن يكون المجرى مفتوحًا في وضعية القراءة أو سيُطلق استثناء IOError
.
readpartial
يقرأ التابع readpartial
maxlen
(انظر فقرة البنية العامة) بايتًا على الأكثر من مجرى د/خ. لا يقوم التابع readpartial
بالتعطيل إلا في حال لم يكن في مجرى د/خ ios
أي بيانات متوفرة آنيًا. لن يقوم بالتعطيل في حالة توفر بعض البيانات.
reopen
يربط التابع reopen
بين مجرى د/خ الذي استُدعي معه ios
وبين مجرى د/خ المعطى في other_IO
(انظر فقرة البنية العامة)، أو مجرى جديد يُفتح من المسار path
. قد يؤدي هذا إلى تغيير الصنف الفعلي لهذا المجرى ديناميكيًا.
rewind
يُموضِع التابع rewind
مجرى د/خ الذي استُدعي معه ios
عند بداية الإدخال، مع تعيين lineno
عند القيمة صفر.
seek
يسعى التابع seek
إلى التموضع عند الإزاحة المعطاة anInteger
في مجرى د/خ وفقا لقيمة whence
(انظر فقرة البنية العامة):
set_encoding
في حال تمرير وسيط واحد، فستوسم السلسلة النصية المقروءة من مجرى د/خ وفق الترميز المحدد. إن كان الترميز على هيئة حرفي ترميز مفصولين بنقطتين رأسيتين "A: B"، فستُحوّل السلسلة النصية المقروءة من الترميز A (الترميز الخارجي) إلى الترميز B (الترميز الداخلي)، ثم توسم بـ B. في حال إعطاء وسيطين، فيجب أن يكونا كائني ترميز، أو اسمي ترميز، حيث يمثل أولها الترميز الخارجي، فيما يمثل ثانيهما الترميز الداخلي. في حال تحديد الترميز الخارجي والترميز الداخلي، فسيحدد الوسيط الاختياري opt خيارات التحويل.
stat
يُعيد التابع stat
معلومات الحالة لمجرى د/خ الذي استُدعي معه ios
على هيئة كائن من النوع File::Stat
.
sync
يُعيد التابع sync
قيمة راية وضع المزامنة "sync mode" الحالية لمجرى د/خ ios
. عندما تكون قيمة وضع المزامنة true، فسيتم إرسال كل المخرجات فورًا إلى نظام التشغيل، ولن يُخزّن مؤقتًا من قبل روبي داخليًا. انظر أيضا صفحة IO#fsync
.
sync=
يضبط التابع sync=
قيمة راية وضع المزامنة “sync mode' عند إحدى القيمتين true
أو false
. عندما تكون قيمة وضع المزامنة true، فسيتم إرسال كل المخرجات فورًا إلى نظام التشغيل، ولن تُخزن (buffered) داخليًا. يُعيد التابع sync=
الحالة الجديدة. انظر أيضا صفحة IO#fsync
.
sysread
يقرأ التابع sysread
maxlen
(انظر فقرة البنية العامة) بايتًا من مجرى د/خ الذي استُدعي معه ios
باستخدام قراءة منخفضة المستوى (low-level read) ويُعيدها كسلسلة نصية. لا تخلط هذا التابع مع التوابع الأخرى التي تقرأ من مجرى د/خ ios
، أو قد تحصل على نتائج غير متوقعة.
sysseek
يسعى التابع sysseek
إلى التموضع عند الإزاحة المعطاة offset
(انظر فقرة البنية العامة) وفقا لقيمة whence
(انظر IO#seek
للتعرف على القيم الممكنة للوسيط whence
). يُعيد الإزاحة الجديدة للملف.
syswrite
يكتب التابع syswrite
السلسلة النصية المعطاة في مجرى د/خ الذي استُدعي معه ios
باستخدام كتابة منخفض المستوى (low-level write). ثم يعيد عدد البايتات المكتوبة. لا تخلط هذا التابع مع التوابع الأخرى التي تكتب في مجرى د/خ ios
، أو قد تحصل على نتائج غير متوقعة. يُطلق استثناء SystemCallError
عند حدوث خطأ.
tell
يُعيد التابع tell
الإزاحة الحالية (بالبايت) في مجرى د/خ ios
.
to_i
to_io
يعيد التابع to_io
مجرى د/خ الذي استُدعي معه ios
.
tty?
يُعيد التابع tty?
القيمة true
إن كان مجرى د/خ ios
مربوطا بطرفية (tty)، أو يعيد false
خلاف ذلك.
ungetbyte
يدفع (Pushes back) التابع ungetbyte
البايتات (التي تم تمريرها كوسيط) إلى مجرى د/خ الذي استُدعي معه ios
، بحيث ستعيدها القراءة التالية من المخزن المؤقت (buffer). لا يمكنك أن تدفع إلا بايتًا واحدا فقط قبل عملية القراءة اللاحقة (أي، لن تتمكن من قراءة إلا آخر بايت من البايتات التي دفتعها). ليس له أي تأثير مع القراءات غير التخزينية (unbuffered reads) (مثل IO#sysread
).
ungetc
يدفع التابع ungetc
حرفا واحدا (المُمرر كوسيط) في مجرى د/خ الذي استُدعي معه ios
، بحيث ستعيدها القراءة التالية من المخزن المؤقت (buffer). لا يمكنك أن تدفع إلا حرف واحد فقط قبل عملية القراءة اللاحقة (أي، لن تتمكن من قراءة إلا آخر حرف من الحروف التي دفتعها). ليس له أي تأثير مع القراءات غير التخزينية (unbuffered reads) (مثل IO#sysread
).
write
يكتب التابع write
السلاسل النصية المعطاة في مجرى د/خ ios
. يجب أن يكون المجرى مفتوحا في وضعية للكتابة. سيتم تحويل الوسائط غير النصية إلى سلسلة نصية باستخدام to_s
. يُعيد التابع write
عدد البايتات المكتوبة في الإجمال.
write_nonblock
يكتب التابع write_nonblock
السلسلة النصية المعطاة في ios
باستخدام استدعاء النظام write(2) بعد تعيين O_NONBLOCK لواصف الملف (file descriptor) الأساسي.