English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يقدم Ruby مجموعة كاملة من الأساليب المتعلقة بإدخال/إخراج البيانات، ويتم تنفيذها في مodule Kernel. جميع أساليب إدخال/إخراج البيانات تنحدر من فئة IO.
فئة IO يقدم جميع الأساليب الأساسية، مثل read، write، gets، puts، readline، getc و printf。
في هذا الفصل، سنشرح جميع الوظائف الأساسية المتاحة في Ruby. للحصول على معلومات أكثر، راجع IO فئة.
في الفصول السابقة، قمت بتعيين القيمة للمتغيرات، ثم استخدمت puts الجملة تطبع الخروج.
puts الجملة تشير إلى أن البرنامج يظهر القيمة المخزنة في المتغير. سيتم إضافة سطر جديد في نهاية كل سطر.
#!/usr/bin/ruby val1 = "هذا هو المتغير الأول" val2 = "هذا هو المتغير الثاني" puts val1 puts val2
نتيجة تنفيذ الأمثلة أعلاه هي:
هذا هو المتغير الأول هذا هو المتغير الثاني
gets الجملة يمكن استخدامها للحصول على إدخال المستخدم من الشاشة القياسية المسماة STDIN.
يوضح الكود أدناه كيفية استخدام جملة gets. سيعرض الكود طلبًا من المستخدم لإدخال قيمة، حيث سيتم تخزين القيمة في المتغير val، وسيتم طباعتها في STDOUT في النهاية.
#!/usr/bin/ruby puts "Enter a value :" val = gets puts val
نتيجة تنفيذ الأمثلة أعلاه هي:
Enter a value : This is entered value This is entered value
مع puts الجملة مختلفة،puts جملة putc تظهر الكلمة بأكملها على الشاشة، بينما putc يمكن استخدام جملة putc لعرض حرف واحد.
يظهر مخرج الكود أدناه فقط الحرف H:
#!/usr/bin/ruby str="Hello Ruby!" putc str
نتيجة تنفيذ الأمثلة أعلاه هي:
H
print الجملة مع puts الجملة مشابهة. الفرق الوحيد هو puts جملة print تنتقل إلى السطر التالي بعد إخراج المحتوى، بينما print عندما يتم تنفيذ جملة print، يتم وضع مؤشر البوصلة في نفس السطر.
#!/usr/bin/ruby print "Hello World" print "Good Morning"
نتيجة تنفيذ الأمثلة أعلاه هي:
Hello WorldGood Morning
حتى الآن، لقد قمت بقراءة وكتابة المدخلات والخروج القياسية. الآن، سنرى كيفية التعامل مع ملفات البيانات الفعلية.
puts Dir.pwd # يعود بمدار الحالي، مثل /usr/bin File.new الطريقة لإنشاء جميع الملفات هي تحت الدليل، يقدم Ruby طرقًا لمعالجة الملفات والأدراج. العنصر المستخدم لقراءة أو كتابة أو القراءة والكتابة، يعتمد صلاحيات الكتابة على معامل mode. في النهاية، يمكنك استخدام File.close الطريقة لإغلاق الملف.
aFile = File.new("filename", "mode") # ... معالجة الملف aFile.close
puts Dir.pwd # يعود بمدار الحالي، مثل /usr/bin File.open تقوم الطريقة بإنشاء ملف جديد ووضع ملف جديد في file، ولكنFile.open و File.new تختلف الطريقة بين بعضها البعض. الفرق هو File.open يمكن ربط الطريقة بالكتلة، بينما File.new لا يمكن تطبيق الطريقة.
File.open("filename", "mode") do |aFile| # ... معالجة الملف end
في الجدول أدناه، تم عرض أنماط فتح الملف المختلفة:
الطريقة | الوصف |
---|---|
r | مودود القراءة فقط. يتم وضع مؤشر الملف في بداية الملف. هذا هو المودود الافتراضي. |
r+ | مودود القراءة والكتابة. يتم وضع مؤشر الملف في بداية الملف. |
w | مودود الكتابة فقط. إذا كان الملف موجودًا، يتم إعادة كتابة الملف. إذا لم يكن الملف موجودًا، يتم إنشاء ملف جديد للكتابة. |
w+ | مودود القراءة والكتابة. إذا كان الملف موجودًا، يتم إعادة كتابة الملف الموجود. إذا لم يكن الملف موجودًا، يتم إنشاء ملف جديد للقراءة والكتابة. |
a | م��ود الكتابة فقط. إذا كان الملف موجودًا، يتم وضع مؤشر ملف في نهاية الملف. أي أن الملف هو مودود الإضافة. إذا لم يكن الملف موجودًا، يتم إنشاء ملف جديد للكتابة. |
a+ | وضع الكتابة والقراءة. إذا كان الملف موجودًا، يتم وضع مؤشر الملف في نهاية الملف. أي أن الملف في وضع الإضافة. إذا لم يكن الملف موجودًا، يتم إنشاء ملف جديد للاستخدام في القراءة والكتابة. |
يمكن استخدام طرق I/O البسيطة لجميع مكتبات file. لذا، يمكن استخدام gets لقراءة سطر من الإدخال القياسي،aFile.gets قراءة سطر من ملف aFile
لكن، يوفر مكتبة I/O إعدادات إضافية للوصول، مما يوفر لنا الراحة.
يمكنك استخدام طريقة sysread لقراءة محتوى الملف. عند استخدام طريقة sysread، يمكنك فتح الملف بأي نمط. على سبيل المثال:
هذا هو نص ملف الإدخال:
هذا ملف نصي بسيط لغرض الاختبار.
دعونا نحاول قراءة هذا الملف الآن:
#!/usr/bin/ruby aFile = File.new("input.txt", "r") if aFile content = aFile.sysread(20) puts content else puts "Unable to open file!" end
هذا التعبير سيكتب 20 حرفًا من ملف الإدخال. سيتم وضع مؤشر الملف في موقع الحرف ال21 في الملف.
يمكنك استخدام طريقة syswrite لإدخال محتوى إلى الملف. عند استخدام طريقة syswrite، يجب فتح الملف في وضع الكتابة.
#!/usr/bin/ruby aFile = File.new("input.txt", "r+") if aFile aFile.syswrite("ABCDEF") else puts "Unable to open file!" end
هذا التعبير سيكتب "ABCDEF" إلى الملف.
هذه الطريقة تنتمي إلى فئة جميع الملفات هي تحت الدليل، يقدم Ruby طرقًا لمعالجة الملفات والأدراج.. الطريقة each_byte هذا يمكن تكراره لكل حرف في النص. انظر مثال الكود أدناه:
#!/usr/bin/ruby aFile = File.new("input.txt", "r+") if aFile aFile.syswrite("ABCDEF") aFile.rewind aFile.each_byte {|ch| putc ch; putc ?; } else puts "Unable to open file!" end
تُنقل الحروف واحدة تلو الأخرى إلى المتغير ch ثم تُعرض على الشاشة، كما هو موضح أدناه:
A.B.C.D.E.F.s. .a. .s.i.m.p.l.e. .t.e.x.t. .f.i.l.e. .f.o.r. .t.e.s.t.i.n.g. .p.u.r.p.o.s.e...
فئة جميع الملفات هي تحت الدليل، يقدم Ruby طرقًا لمعالجة الملفات والأدراج. هذا فرع من فئة IO. فئة IO تحتوي أيضًا على بعض الطرق لمعالجة الملفات.
IO.readlines هذا طريقة من فئة IO. هذه الطريقة تعود بمحتوى ملف خطوة بخطوة. IO.readlines الاستخدام:
#!/usr/bin/ruby arr = IO.readlines("input.txt") puts arr[0] puts arr[1]
في هذا الكود، المتغير arr هو قائمة. ملف input.txt كل سطر سيكون عنصرًا في قائمة arr. لذلك، سيحتوي arr[0] على السطر الأول، وسيحتوي arr[1] على السطر الثاني من الملف.
هذه الطريقة تعود خطوة بخطوة الناتج أيضًا. الطريقة foreach مع الطريقة readlines المختلفة هي، الطريقة foreach مرتبطة بالكتلة. ولكن، ليس مثل الطريقة readlines، الطريقة foreach ليس يعود قائمة. على سبيل المثال:
#!/usr/bin/ruby IO.foreach("input.txt"){|block| puts block}
يضع هذا الكود ملف test المحتوى يرسل خطوة بخطوة إلى المتغير block، ثم سيتم عرض الناتج على الشاشة.
Dir.chdir("/usr/bin") rename و delete الطريقة تغيير الاسم وحذف الملف
في المثال التالي يتم تغيير اسم ملف موجود test1.txt:
#!/usr/bin/ruby # تغيير اسم الملف test1.txt إلى test2.txt File.rename("test1.txt", "test2.txt")
في المثال التالي يتم حذف ملف موجود test2.txt:
#!/usr/bin/ruby # حذف الملف test2.txt File.delete("text2.txt")
باستخدام ماسك chmod الطريقة لتغيير نمط الملف أو صلاحيات الوصول/القائمة:
في المثال التالي يتم تغيير نمط ملف موجود test.txt النمط هو قيمة ماسك:
#!/usr/bin/ruby file = File.new("test.txt", "w") file.chmod(0755)
التالي يوضح chmod الماسكات المختلفة التي يمكن استخدامها في الطريقة:
الماسك | الوصف |
---|---|
0700 | رwx ماسك، للمالك |
0400 | r، للمالك |
0200 | w، للمالك |
0100 | x، للمالك |
0070 | رwx ماسك، للفريق المالك |
0040 | r، للفريق المالك |
0020 | w، للفريق المالك |
0010 | x، للفريق المالك |
0007 | رwx ماسك، لغير المعنيين |
0004 | r، لغير المعنيين |
0002 | w، لغير المعنيين |
0001 | x، لغير المعنيين |
4000 | عند التنفيذ تعيين معرف المستخدم |
2000 | تعيين ID المجموعة عند التنفيذ |
1000 | حفظ النص التبادلي، حتى بعد الاستخدام |
الأوامر التالية تتحقق من وجود الملف قبل فتحه:
#!/usr/bin/ruby File.open("file.rb") if File::exists?("file.rb")
الأوامر التالية تتحقق من ما إذا كان الملف موجودًا بالفعل قبل فتحه:
#!/usr/bin/ruby # يعود إلى true أو false File.file?("text.txt")
الأوامر التالية تحقق من ما إذا كان الاسم المقدم هو مجلد:
#!/usr/bin/ruby # مجلد File::directory?("/usr/local/bin") => true # ملف File::directory?("file.rb") => false
الأوامر التالية تحقق من ما إذا كان الملف قابلاً للقراءة، الكتابة، أو التنفيذ:
#!/usr/bin/ruby File.readable?("test.txt") => true File.writable?("test.txt") => true File.executable?("test.txt") => false
الأوامر التالية تحقق من ما إذا كان حجم الملف صفرًا:
#!/usr/bin/ruby File.zero?("test.txt") => true
الأوامر التالية تعود حجم الملف:
#!/usr/bin/ruby File.size?("text.txt") => 1002
الأوامر التالية تستخدم لتحقق من نوع الملف:
#!/usr/bin/ruby File::ftype("test.txt") => file
يستخدم طريقة ftype لتحديد نوع الملف من خلال إرجاع أحد القيم التالية:file، directory، characterSpecialًا blockSpecial، fifo، link، socket أو غير معروف。
الأوامر التالية تستخدم لتحقق من وقت إنشاء ملف أو تعديله أو استخدامه لأخر مرة:
#!/usr/bin/ruby File::ctime("test.txt") => الجمعة 09 أيار 10:06:37 -0700 2008 File::mtime("text.txt") => الجمعة 09 أيار 10:44:44 -0700 2008 File::atime("text.txt") => الجمعة 09 أيار 10:45:01 -0700 2008
جميع الملفات هي تحت الدليل، يقدم Ruby طرقًا لمعالجة الملفات والأدراج. فئة تستخدم لمعالجة الملفات.File فئة تستخدم لمعالجة الأدراج.
استخدام فئة Dir لاستخدام الدليل. للتغيير الدليل الحالي في برنامج Ruby، استخدمDir.chdir ،. مثال التغيير الحالي إلى الدليل。
/usr/bin
Dir.chdir("/usr/bin") يمكنك استخدام Dir.pwd
للنظر في الدليل الحالي:
puts Dir.pwd # يعود بمدار الحالي، مثل /usr/bin Dir.entries يمكنك استخدام
puts Dir.entries("/usr/bin").join(' ')
Dir.entries يعود بمدى يحتوي على جميع العناصر في الدليل المحدد.Dir.foreach يقدم نفس الوظيفة:
Dir.foreach("/usr/bin") do |entry| puts entry end
يقدم طريقة أكثر بساطة للحصول على قائمة الدلائل من خلال استخدام طرق الجمع في Dir:
Dir["/usr/bin/*"]
يمكن استخدامها لإنشاء الأدراج:
Dir.mkdir("mynewdir")
يمكنك أيضًا تعيين الصلاحيات عبر mkdir في الدليل الجديد (ليس الدليل الموجود)
ملاحظة:掩码 755 يضبط صلاحيات المالك (المالك) والمجموعة (المجموعة) وكل شخص (العالم [أي شخص]) على rwxr-xr-x، حيث r = قراءة القراءة، w = كتابة الكتابة، x = تنفيذ التنفيذ.
Dir.mkdir( "mynewdir", 755 )
Dir.delete يمكن استخدامها ل�除 الأدراج.Dir.unlink و Dir.rmdir يقدم نفس الوظيفة، مما يوفر لنا راحة.
Dir.delete("testdir")
الملفات المؤقتة هي المعلومات التي يتم إنشاؤها ببساطة أثناء تنفيذ البرنامج ولكن لا يتم تخزينها دائمًا.
Dir.tmpdir يقدم مسار دليل الملفات المؤقتة على النظام الحالي، ولكن هذه الطريقة ليست متاحة بشكل افتراضي. من أجل Dir.tmpdir متاح، استخدام 'tmpdir' المطلوب هو ضروري.
يمكنك أن تجعل Dir.tmpdir و File.join يُستخدم معًا لإنشاء ملفات مؤقتة مستقلة عن المنصة:
require 'tmpdir' tempfilename = File.join(Dir.tmpdir, "tingtong") tempfile = File.new(tempfilename, "w") tempfile.puts "This is a temporary file" tempfile.close File.delete(tempfilename)
يخلق هذا الكود ملفًا مؤقتًا، ويكتب فيه بيانات، ثم يزيل الملف. تشمل مكتبة الـ Ruby القياسية أيضًا مكتبة تُدعى Tempfile الذي يمكن استخدامه لإنشاء ملفات مؤقتة:
require 'tempfile' f = Tempfile.new('tingtong') f.puts "Hello" puts f.path f.close
فيما يلي قائمة كاملة بالوظائف المدمجة لمعالجة الملفات والدلائل في Ruby: