文件读写
File.open/read/write、块形式自动关闭、FileUtils、Pathname
文件读写
Ruby 文件操作极其优雅——File.open 配合块自动关闭,Pathname 面向对象路径。
学完本章你将: 掌握 File.open/read/write、块形式自动关闭、Pathname。
File 基础
ruby
# 写文件——块形式自动关闭
File.open("hello.txt", "w") do |f|
f.puts "Hello, Ruby!"
f.puts "第二行"
end
# 读文件——一行搞定
content = File.read("hello.txt")
puts content
# 逐行读(大文件友好)
File.readlines("hello.txt").each { |line| puts line }
File.foreach("hello.txt") { |line| puts line }
文件模式
ruby
File.open("data.txt", "r") # 只读
File.open("data.txt", "w") # 写(覆盖)
File.open("data.txt", "a") # 追加
File.open("data.txt", "r+") # 读写
Pathname —— 面向对象路径
ruby
require "pathname"
path = Pathname.new("/home/user/docs/file.txt")
path.basename # #<Pathname:file.txt>
path.extname # ".txt"
path.dirname # #<Pathname:/home/user/docs>
# 拼接
dir = Pathname.new("/home/user")
file = dir / "docs" / "file.txt" # 重载了 / 运算符!
# 遍历
Pathname.new(".").each_child { |p| puts p }
FileUtils
ruby
require "fileutils"
FileUtils.mkdir_p("a/b/c") # 递归创建目录
FileUtils.cp("src.txt", "dst.txt") # 复制
FileUtils.mv("old.txt", "new.txt") # 移动/重命名
FileUtils.rm_rf("tmp") # 递归删除(危险)