Khóa học ruby

File I/O trong Ruby

0 phút đọc

File I/O (Input/Output) là một phần quan trọng trong lập trình, cho phép bạn đọc và ghi dữ liệu từ và vào các tệp tin. Ruby cung cấp nhiều phương thức và lớp để thực hiện các thao tác này một cách dễ dàng và hiệu quả. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về File I/O trong Ruby, bao gồm các chủ đề như puts, gets, putc, print, mở và đóng tệp, đọc và ghi tệp, và nhiều hơn nữa.

The puts Statement

Phương thức puts được sử dụng để in ra màn hình một chuỗi ký tự, với mỗi chuỗi được in trên một dòng mới. Đây là một trong những phương thức cơ bản nhất để xuất dữ liệu ra màn hình.

puts "Hello, World!"
puts "This is Ruby."

The gets Statement

Phương thức gets được sử dụng để đọc một dòng đầu vào từ người dùng. Nó chờ người dùng nhập dữ liệu và nhấn Enter, sau đó trả về chuỗi ký tự đã nhập.

puts "Enter your name:"
name = gets.chomp
puts "Hello, #{name}!"

The putc Statement

Phương thức putc được sử dụng để in ra một ký tự duy nhất. Nó không thêm ký tự dòng mới sau khi in.

putc "H"
putc "i"
# Output: Hi

The print Statement

Phương thức print tương tự như puts, nhưng nó không thêm ký tự dòng mới sau khi in.

print "Hello, "
print "World!"
# Output: Hello, World!

Opening and Closing Files

Để làm việc với tệp tin trong Ruby, bạn cần mở tệp trước khi đọc hoặc ghi, và đóng tệp sau khi hoàn thành. Ruby cung cấp hai phương thức chính để mở tệp: File.newFile.open.

The File.new Method

Phương thức File.new tạo một đối tượng tệp mới. Bạn có thể chỉ định chế độ mở tệp như đọc (r), ghi (w), hoặc thêm (a).

file = File.new("example.txt", "w")
file.puts "Hello, World!"
file.close

The File.open Method

Phương thức File.open tương tự như File.new, nhưng nó có thể được sử dụng với một khối lệnh. Khi sử dụng với khối lệnh, tệp sẽ tự động được đóng sau khi khối lệnh kết thúc.

File.open("example.txt", "w") do |file|
  file.puts "Hello, World!"
end

Reading and Writing Files

Ruby cung cấp nhiều phương thức để đọc và ghi dữ liệu từ và vào tệp tin.

The sysread Method

Phương thức sysread đọc một số byte cụ thể từ tệp và trả về chúng dưới dạng chuỗi.

file = File.open("example.txt", "r")
content = file.sysread(20)
puts content
file.close

The syswrite Method

Phương thức syswrite ghi một chuỗi vào tệp.

file = File.open("example.txt", "w")
file.syswrite("Hello, World!")
file.close

The each_byte Method

Phương thức each_byte lặp qua từng byte trong tệp và thực hiện một khối lệnh cho mỗi byte.

File.open("example.txt", "r") do |file|
  file.each_byte { |byte| puts byte }
end

The IO.readlines Method

Phương thức IO.readlines đọc toàn bộ tệp và trả về một mảng các dòng.

lines = IO.readlines("example.txt")
lines.each { |line| puts line }

The IO.foreach Method

Phương thức IO.foreach đọc từng dòng trong tệp và thực hiện một khối lệnh cho mỗi dòng.

IO.foreach("example.txt") { |line| puts line }

Renaming and Deleting Files

Ruby cung cấp các phương thức để đổi tên và xóa tệp.

Renaming Files

Phương thức File.rename được sử dụng để đổi tên tệp.

File.rename("example.txt", "new_example.txt")

Deleting Files

Phương thức File.delete được sử dụng để xóa tệp.

File.delete("new_example.txt")

File Modes and Ownership

Khi mở tệp, bạn có thể chỉ định chế độ mở tệp để xác định cách tệp sẽ được sử dụng.

  • "r": Chế độ đọc, tệp phải tồn tại.
  • "w": Chế độ ghi, tạo tệp mới hoặc ghi đè tệp hiện có.
  • "a": Chế độ thêm, thêm vào cuối tệp.
  • "r+": Chế độ đọc và ghi, tệp phải tồn tại.
  • "w+": Chế độ đọc và ghi, tạo tệp mới hoặc ghi đè tệp hiện có.
  • "a+": Chế độ đọc và thêm, thêm vào cuối tệp.

File Inquiries

Ruby cung cấp nhiều phương thức để kiểm tra thông tin về tệp.

  • File.exist?("filename"): Kiểm tra xem tệp có tồn tại hay không.
  • File.size("filename"): Trả về kích thước của tệp.
  • File.readable?("filename"): Kiểm tra xem tệp có thể đọc được hay không.
  • File.writable?("filename"): Kiểm tra xem tệp có thể ghi được hay không.
  • File.executable?("filename"): Kiểm tra xem tệp có thể thực thi được hay không.

Directories in Ruby

Ruby cung cấp lớp Dir để làm việc với thư mục.

Bạn có thể thay đổi thư mục làm việc hiện tại bằng phương thức Dir.chdir.

Dir.chdir("/path/to/directory")
puts Dir.pwd  # In ra thư mục hiện tại

Creating a Directory

Phương thức Dir.mkdir được sử dụng để tạo thư mục mới.

Dir.mkdir("new_directory")

Deleting a Directory

Phương thức Dir.rmdir được sử dụng để xóa thư mục. Thư mục phải rỗng.

Dir.rmdir("new_directory")

Listing Files in a Directory

Phương thức Dir.entries trả về một mảng chứa tên các tệp và thư mục trong thư mục hiện tại.

entries = Dir.entries(".")
puts entries.inspect

Creating Files & Temporary Directories

Ruby cung cấp các phương thức để tạo tệp và thư mục tạm thời.

Creating Temporary Files

Bạn có thể sử dụng thư viện tempfile để tạo tệp tạm thời.

require 'tempfile'

tempfile = Tempfile.new('my_temp_file')
tempfile.puts "This is a temporary file."
tempfile.close

Creating Temporary Directories

Bạn có thể sử dụng thư viện tmpdir để tạo thư mục tạm thời.

require 'tmpdir'

Dir.mktmpdir do |dir|
  puts "Temporary directory created at: #{dir}"
end

Kết luận

File I/O là một phần quan trọng trong lập trình Ruby, cung cấp nhiều phương thức và lớp để làm việc với tệp và thư mục. Bằng cách sử dụng các phương thức như puts, gets, putc, print, File.open, File.new, sysread, syswrite, each_byte, IO.readlines, IO.foreach, và các phương thức khác, bạn có thể thực hiện các thao tác đọc và ghi tệp một cách dễ dàng và hiệu quả. Hãy tiếp tục khám phá và thực hành với File I/O trong Ruby để trở thành một lập trình viên giỏi hơn.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

Gợi ý bài viết

Bình luận

Chưa có bình luận nào

Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely