Z
ZHANK
标准库与工具

文件读写

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")              # 递归删除(危险)