加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么Ruby的文件相关类型是基于字符串的(字符串类型)?

发布时间:2020-12-17 02:56:56 所属栏目:百科 来源:网络整理
导读:例如Dir.entries返回字符串数组与包含File或Dir实例的数组. 关于Dir和File类型的大多数方法.相比之下,这些情况是动态的. 没有Dir#文件夹或Dir#文件 – 而是我明确地说 遍历Dir.entries 为其构建路径(File.expand_path) 每个物品 检查File.directory? 简单的
例如Dir.entries返回字符串数组与包含File或Dir实例的数组.
关于Dir和File类型的大多数方法.相比之下,这些情况是动态的.

没有Dir#文件夹或Dir#文件 – 而是我明确地说

>遍历Dir.entries
>为其构建路径(File.expand_path)
每个物品
>检查File.directory?

简单的用例如获取此目录中的所有.svg文件似乎需要许多箍/循环/检查.我使用Ruby是错误的还是Ruby的这个方面看起来非常不重要?

解决方法

根据您的需要,FileDir可能会很好.

当你需要链接命令并且(理所当然地)认为只使用带有字符串参数的类方法时,你可以使用Pathname.它是一个标准的库.

例子

Dirs和文件

require 'pathname'

my_folder = Pathname.new('./')
dirs,files = my_folder.children.partition(&:directory?)
# dirs is now an Array of Pathnames pointing to subdirectories of my_folder
# files is now an Array of Pathnames pointing to files inside my_folder

所有.svg文件

如果由于某种原因可能存在扩展名为.svg的文件夹,则只能过滤Pathname.glob返回的路径名:

svg_files = Pathname.glob("folder/","*.svg").select(&:file?)

如果你想要一个特定的语法:

class Pathname
  def files
    children.select(&:file?)
  end
end

aDir = Pathname.new('folder/')
p aDir.files.find_all{ |f| f.extname == '.svg' }

迭代目录树

Pathname#find会有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读