在Ruby中,你可以使用Dir.glob
或Dir[]
方法来模拟C语言中的readdir
函数,以读取目录的内容。这两个方法都接受一个目录路径作为参数,并返回该目录下所有文件和子目录的数组。
下面是一个简单的例子,展示了如何在Ruby中使用Dir.glob
来读取目录内容:
# 指定要读取的目录路径
dir_path = '/path/to/directory'
# 使用 Dir.glob 读取目录内容
entries = Dir.glob(File.join(dir_path, '*'))
# 输出目录内容
entries.each do |entry|
puts entry
end
或者,你也可以使用Dir[]
方法,它的语法更简洁:
# 指定要读取的目录路径
dir_path = '/path/to/directory'
# 使用 Dir[] 读取目录内容
entries = Dir[dir_path + '/*']
# 输出目录内容
entries.each do |entry|
puts entry
end
这两种方法都会返回一个包含目录中所有文件和子目录名称的数组。如果你想要获取更多关于每个条目的信息,比如文件类型、大小等,你可以使用File
类的方法,例如File.stat
。
下面是一个更复杂的例子,它不仅列出了目录中的所有条目,还显示了每个条目的详细信息:
# 指定要读取的目录路径
dir_path = '/path/to/directory'
# 使用 Dir.glob 读取目录内容
entries = Dir.glob(File.join(dir_path, '*'))
# 遍历目录内容并输出详细信息
entries.each do |entry|
stat_info = File.stat(entry)
puts "Name: #{entry}"
puts "Size: #{stat_info.size} bytes"
puts "Last modified: #{stat_info.mtime}"
puts "Is directory: #{stat_info.directory?}"
puts "-----------------------------"
end
请注意,上述代码示例中的路径/path/to/directory
需要替换为你想要读取的实际目录路径。此外,这些方法默认会包括.
(当前目录)和..
(父目录)在内,如果你不希望包含这些特殊条目,可以在返回的数组中过滤掉它们。