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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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).

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

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

Deleting Files

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

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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.

ruby Copy
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

Admin Team

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

Không có dữ liệu

Không có dữ liệu

Gợi ý bài viết
Không có dữ liệu

Không có dữ liệu

Bình luận

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

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