I/O #
Input/Output (I/O) dalam Ruby melibatkan interaksi dengan pengguna, file, atau perangkat lain untuk membaca dan menulis data. Ruby menyediakan berbagai metode dan kelas untuk menangani operasi I/O, baik itu input dari keyboard, output ke layar, atau manipulasi file di sistem.
Input dan Output Dasar #
Output ke Layar #
Ruby menyediakan beberapa metode untuk menampilkan output ke layar:
-
puts
: Menampilkan output dengan menambahkan baris baru setelah setiap argumen.Contoh:
puts "Hello, World!" puts "This is Ruby."
Output:
Hello, World! This is Ruby.
-
print
: Menampilkan output tanpa menambahkan baris baru.Contoh:
print "Hello, " print "World!"
Output:
Hello, World!
-
p
: Mirip denganputs
, tetapi juga menampilkan representasi literal dari objek.Contoh:
p "Hello, World!" p [1, 2, 3]
Output:
"Hello, World!" [1, 2, 3]
Input dari Pengguna #
Untuk menerima input dari pengguna, Ruby menggunakan metode gets
. Metode ini membaca input dari pengguna sebagai string, termasuk karakter newline di akhir input.
-
gets
: Membaca satu baris input dari pengguna.Contoh:
print "Enter your name: " name = gets.chomp puts "Hello, #{name}!"
Penjelasan:
gets
membaca input dari pengguna.chomp
menghapus karakter newline (\n
) dari akhir string yang dihasilkan olehgets
.
Penanganan File #
Ruby menyediakan kelas File
dan IO
untuk membaca dari dan menulis ke file.
Membuka dan Menutup File #
-
File.open
: Membuka file dan mengembalikan objekFile
.Contoh:
file = File.open("example.txt", "w") file.puts "Hello, World!" file.close
Penjelasan:
"example.txt"
adalah nama file yang akan dibuka atau dibuat."w"
adalah mode pembukaan file (w
untuk write,r
untuk read,a
untuk append).- Jangan lupa menutup file setelah selesai menggunakan metode
close
.
-
File.open
dengan blok: Memastikan file ditutup secara otomatis setelah blok selesai dieksekusi.Contoh:
File.open("example.txt", "w") do |file| file.puts "Hello, World!" end
Penjelasan:
- File akan otomatis ditutup setelah blok selesai dieksekusi, bahkan jika terjadi kesalahan dalam blok tersebut.
Membaca dari File #
-
File.read
: Membaca seluruh isi file dan mengembalikannya sebagai string.Contoh:
content = File.read("example.txt") puts content
Penjelasan:
File.read
membaca seluruh isi file dan mengembalikannya sebagai string.
-
File.readlines
: Membaca seluruh isi file dan mengembalikannya sebagai array dari baris-barisnya.Contoh:
lines = File.readlines("example.txt") lines.each { |line| puts line }
Penjelasan:
File.readlines
membaca file dan mengembalikan setiap baris sebagai elemen dalam array.
-
Iterasi melalui file dengan
each_line
:Contoh:
File.open("example.txt", "r") do |file| file.each_line do |line| puts line end end
Penjelasan:
each_line
digunakan untuk iterasi melalui setiap baris dalam file.
Menulis ke File #
-
puts
atauwrite
ke file:Contoh:
File.open("example.txt", "w") do |file| file.puts "Hello, World!" file.write "This is another line." end
Penjelasan:
puts
menulis string ke file dan menambahkan baris baru, sementarawrite
menulis string tanpa menambahkan baris baru.
Mode Pembukaan File #
Saat membuka file, Anda dapat menentukan mode pembukaan. Berikut beberapa mode yang sering digunakan:
"r"
: Membuka file untuk membaca. Jika file tidak ada, akan menghasilkan kesalahan."w"
: Membuka file untuk menulis. Jika file ada, isinya akan dihapus. Jika file tidak ada, akan dibuat file baru."a"
: Membuka file untuk menambahkan (append). Jika file tidak ada, akan dibuat file baru."r+"
: Membuka file untuk membaca dan menulis. Tidak menghapus isi file."w+"
: Membuka file untuk membaca dan menulis. Menghapus isi file jika file ada."a+"
: Membuka file untuk membaca dan menulis. Menambahkan ke akhir file.
Contoh:
File.open("example.txt", "a") do |file|
file.puts "Appending this line."
end
Penjelasan:
- Mode
"a"
digunakan untuk menambahkan teks ke akhir file tanpa menghapus konten yang sudah ada.
Penanganan Direktori #
Ruby juga menyediakan metode untuk bekerja dengan direktori.
Membuat Direktori #
-
Dir.mkdir
: Membuat direktori baru.Contoh:
Dir.mkdir("new_directory")
Penjelasan:
Dir.mkdir
membuat direktori baru bernama"new_directory"
.
Mengubah Direktori #
-
Dir.chdir
: Mengubah direktori kerja saat ini.Contoh:
Dir.chdir("new_directory")
Penjelasan:
Dir.chdir
mengubah direktori kerja ke"new_directory"
.
Membaca Isi Direktori #
-
Dir.entries
: Mengembalikan array yang berisi daftar file dan direktori dalam direktori tertentu.Contoh:
entries = Dir.entries(".") puts entries
Penjelasan:
Dir.entries(".")
mengembalikan daftar file dan direktori dalam direktori saat ini.
-
Dir.glob
: Mengembalikan daftar file yang cocok dengan pola tertentu.Contoh:
files = Dir.glob("*.txt") puts files
Penjelasan:
Dir.glob("*.txt")
mengembalikan daftar semua file dengan ekstensi.txt
dalam direktori saat ini.
Error Handling dalam I/O #
Ketika bekerja dengan I/O, penting untuk menangani kemungkinan kesalahan, seperti file yang tidak ditemukan atau masalah izin. Ruby memungkinkan Anda menangani kesalahan ini menggunakan blok begin...rescue
.
Contoh:
begin
file = File.open("non_existent_file.txt", "r")
rescue Errno::ENOENT => e
puts "File not found: #{e.message}"
ensure
file.close if file
end
Penjelasan:
- Blok
begin
mencoba membuka file. - Jika file tidak ditemukan,
rescue
menangkap kesalahan dan menampilkan pesan. ensure
memastikan file ditutup jika berhasil dibuka.
Kesimpulan #
Penanganan I/O di Ruby melibatkan operasi dasar seperti membaca dari dan menulis ke layar, file, dan direktori. Ruby menyediakan kelas File
dan Dir
serta berbagai metode yang memudahkan interaksi dengan sistem file. Menangani I/O dengan benar juga mencakup penanganan kesalahan untuk memastikan program dapat menangani situasi seperti file yang tidak ditemukan atau masalah izin. Dengan memahami dasar-dasar ini, Anda dapat melakukan berbagai operasi I/O dengan Ruby secara efektif. Jika Anda memiliki pertanyaan lebih lanjut atau membutuhkan penjelasan tambahan, jangan ragu untuk bertanya!