unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
I/O

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 dengan puts, 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 oleh gets.

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 objek File.

    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.
  • puts atau write 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, sementara write 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!

« Multi Threading
Socket »