Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
项目外部的路径,Ruby Dir_Ruby - Fatal编程技术网

项目外部的路径,Ruby Dir

项目外部的路径,Ruby Dir,ruby,Ruby,我尝试使用以下代码返回目录的文件列表: Dir[directory] 我遇到的问题是,它似乎总是将url作为相对于项目位置的url。例如,将“*”传递到Dir将返回一个包含my Gemfile等的数组。。我希望能够获取目录的文件列表,例如/Users/jason/Pictures,但是当我传入/Users/jason/Pictures/*时,返回的是一个空数组 任何指点都将不胜感激。 谢谢。您需要使用entries方法 Dir.entries('/') => [".", "..", ".

我尝试使用以下代码返回目录的文件列表:

Dir[directory]
我遇到的问题是,它似乎总是将url作为相对于项目位置的url。例如,将“*”传递到Dir将返回一个包含my Gemfile等的数组。。我希望能够获取目录的文件列表,例如
/Users/jason/Pictures
,但是当我传入
/Users/jason/Pictures/*
时,返回的是一个空数组

任何指点都将不胜感激。
谢谢。

您需要使用entries方法

Dir.entries('/')
=> [".", "..", ".apdisk", ".com.apple.backupd.mvlist.plist", ".dbfseventsd", ".DocumentRevisions-V100", ".DS_Store", ".file", ".fseventsd", ".hotfiles.btree", ".MobileBackups",".OSInstallMessages", ".PKInstallSandboxManager", ".Spotlight-V100", ".SymAVx86QSFile", ".Trashes", ".vol", "Applications", "bin", "cores", "dev", "etc", "home", "Library", "net", "Network", "opt", "private", "sbin", "System", "tmp", "Users", "usr", "var", "Volumes", "~"]
这是官方文件

试试看:

Dir['/Users/jason/Pictures/*']
如果该路径中嵌入了文件或目录,您将从中获取一个数组。如果没有,并且您确定目录中有文件,那么就有问题了,但很可能是在您提供的glob字符串中。通过移动到它并使用
pwd
查看操作系统认为它是什么来确认它是正确的路径
Dir[]
不返回错误如果全局字符串无效,它只返回一个空数组

您可以尝试使用
File.exist?('glob string without*')
并在尝试迭代之前查看该路径是否存在

在我的计算机上,在我的主目录的IRB中运行此命令:

Dir['./vim/bundle/*']
返回:

[
    [ 0] "./vim/bundle/closetag.vim",
    [ 1] "./vim/bundle/ctrlp.vim",
    ...
    [31] "./vim/bundle/vim-vividchalk",
    [32] "./vim/bundle/Vundle.vim"
]
我也可以使用绝对路径:

Dir['/Users/ttm/vim/bundle/*']
并获得:

[
    [ 0] "/Users/ttm/vim/bundle/closetag.vim",
    [ 1] "/Users/ttm/vim/bundle/ctrlp.vim",
    ...
    [31] "/Users/ttm/vim/bundle/vim-vividchalk",
    [32] "/Users/ttm/vim/bundle/Vundle.vim"
]

请注意,如果使用相对全局字符串,则会得到相对路径名,而绝对全局字符串会得到绝对路径名。

Dir['/Users//Pictures/*']
在我的机器上工作。这可能是一个权限问题吗?我想可能是我忽略了在我的机器上创建测试目录的事实,但是SSH已经进入另一个开发框中。。也许该睡觉了。。