您是否知道可以使用Ruby浏览文件系统?
使用Ruby“ Dir”类。
您可以列出目录条目,更改当前目录,甚至创建新文件夹!
这是一个例子:
- 文件名= Dir 。条目(“。” )
顺便说一句,该点(
.
)表示当前目录。这将是您的代码正在运行的目录,而不是您在代码中运行的目录(在终端中)。
因此...
使用该
Dir.pwd
方法检查当前目录可能会有所帮助。现在:
获取我的终极Ruby秘籍表: 这个方便的7页PDF帮助您快速找到所需的Ruby语法,正在寻找的Ruby方法或您不太记得其名称的内置类。
让我们学习如何使用
Dir
该类创建新目录(mkdir
),重命名它们(mv
)以及查找遵循特定模式的文件名(glob
)。使用Ruby的Mkdir方法创建新目录
如果要使用Ruby创建新文件夹,则可以使用该
Dir.mkdir
方法。范例:
- 迪尔。mkdir (“测试” )
如果指定了相对路径,则会在当前路径(
Dir.pwd
)下创建此目录。您可能会遇到一些错误:
- 目录已存在(Errno::EEXIST)
- 权限被拒绝(Errno::EACCES)
- 您正在尝试在尚不存在的另一个文件夹(Errno::ENOENT)下创建一个文件夹
当您尝试创建嵌套目录时,通常会发生最后一个错误。
或者,如果您使用的是不存在的绝对路径。
两种解决方案:
- 在创建目录之前检查目录是否存在(使用Dir.exists?)
- 使用更高级的类(下一节)
让我们继续学习!
FileUtils模块的高级操作
如果您需要额外的功能,则可以
FileUtils
从标准库中引入模块。它包含诸如
mkdir_p
一步创建嵌套目录之类的方法。这是一个例子:
- 需要'fileutils'
- FileUtils 。mkdir_p (“ / tmp / testing / a / b” )
很酷吧?
不仅如此,
FileUtils
还以关键字参数的形式为所有文件操作带来了更多选项。就像verbose
选项(打印Linux命令)和noop
(不更改文件)选项一样。试试看!
如何重命名目录
Ruby允许您从操作系统用户界面或终端中执行所有操作。
例如…
您可以这样重命名目录:
- FileUtils 。mv (“ / tmp / a” ,“ / tmp / b” )
您还需要在
FileUtils
这里使用,因为该类mv
不可用Dir
。如何更改当前目录
因为所有目录操作都是从当前目录运行的,所以您可能需要更改它。
您可以使用该
Dir.chdir
方法来执行此操作。范例:
- 迪尔。CHDIR (“/ TMP” ){ 风向。条目(“。” )}
这有两种工作方式:
- 对于块,当前目录仅针对块内的代码更改
- 在没有块的情况下,方法调用后所有代码都会更改
注意,这
chdir
仅在您的Ruby进程中起作用,而不会影响“外部世界”。换一种说法…
Ruby程序停止运行后,它不会更改Shell的工作目录。
列出具有模式匹配的文件和目录
是否要查找文件夹中的所有Ruby文件?使用该
glob
方法轻松完成任务!范例:
- 迪尔。glob (“ * .rb” )
您可以使用任何其他所需的扩展名,例如“ .txt”或“ .yml”。或文件名中包含的任何其他文本。
是否要在所有文件夹中查找文件?
是的,有可能:
- 迪尔。glob (“ ** / *。rb” )
结果是包含所有文件名(包括相对路径)的数组。通过使用
File.basename
方法,您可以删除列表中的路径并仅获取文件名glob
。摘要
您已经了解了如何使用
Dir
&FileUtils
类在Ruby中使用目录。现在轮到您将其付诸实践了。
谢谢阅读!