章节索引 :

Ruby 的 Dir 类

直到本章为止,我们所做的所有工作都涉及到处理内存中的数据。既然我们已经涵盖了 Ruby 语言的所有基础知识,是时候将我们的注意力转向使用 Ruby 中的文件和目录了。本章中会对 Ruby 如何操作目录做具体介绍。

1. Ruby 中更改目录

启动 Ruby 应用程序时,通常是从特定目录完成的。通常,有必要从 Ruby 代码中导航到文件系统上其他位置的目录。Ruby 在 Dir 类中提供了许多有用的目录导航方法。首先,标识当前目录通常很有用。

这可以通过Ruby Dir类的pwd方法完成:

Dir.pwd => "/home/ruby"

我们同样可以使用pwd查看当前目录:

> Dir.pwd 
=> "/home/ruby"

使用 Ruby Dir 类的 chdir 方法可以在 Ruby 中更改当前工作目录。此方法将目标目录的路径作为参数:

Dir.chdir("/home/ruby/test")

2. 创建新目录

Ruby 中的目录创建由 Dir 类的 mkdir 方法处理。此方法将新目录的路径作为其参数。这可以是目录的完整路径,也可以是基于当前工作目录的相对路径:

Dir.mkdir("/home/ruby/temp")
=> 0

3. Ruby 中的目录列表

导航到所需目录后,通常需要获取该目录中包含的文件列表。可以使用entries方法获得这样的列表。entries方法将需要列出目录的路径作为参数,并返回包含该目录中文件名的数组:

Dir.entries(".")
=> ["techotopia_stats.jpg", "toolButton.png", ".", "..", "techotopia_stats_since_start.jpg", "music_728x90_1.jpg", 
"music_468x60_a.jpg", "Fedora_essentials.jpg"]

我们可以使用了解Ruby数组中介绍的一些技术从数组中提取元素:

dirListing.each { |file| puts file }


# ---- 输出结果 ----
techotopia_stats.jpg
toolButton.png
.
..
techotopia_stats_since_start.jpg
music_728x90_1.jpg
music_468x60_a.jpg
Fedora_essentials.jpg

另外,我们可以利用Dir类的foreach方法获得相同的结果:

Dir.foreach(".") { |file| puts file }

# ---- 输出结果 ----
techotopia_stats.jpg
toolButton_IST.png
.
..
techotopia_stats_since_start.jpg
music_728x90_1.jpg
music_468x60_a.jpg
Fedora_essentials.jpg

4. 小结

本章介绍了 Ruby 中目录处理的基础知识,下一章我们会介绍文件处理的概念。