例如,我的工作目录名为“abc”(空目录),在这里,我启动了一个 ruby 脚本,它将在当前目录下创建一个新目录和文件,例如“abc/a/a.file”。当它需要在这个 ruby 脚本的同一进程中读取这个文件时(从不关闭),它不知道它(新文件)。所以,我需要告诉当前的 ruby 进程来刷新自己当前工作的已知目录。
我在谷歌中找不到任何答案,感谢能帮助解决这个问题的人。我只是让当前进程知道并重新读取自己创建的新文件。
例如,我的工作目录名为“abc”(空目录),在这里,我启动了一个 ruby 脚本,它将在当前目录下创建一个新目录和文件,例如“abc/a/a.file”。当它需要在这个 ruby 脚本的同一进程中读取这个文件时(从不关闭),它不知道它(新文件)。所以,我需要告诉当前的 ruby 进程来刷新自己当前工作的已知目录。
我在谷歌中找不到任何答案,感谢能帮助解决这个问题的人。我只是让当前进程知道并重新读取自己创建的新文件。
对于当前目录,该进程正在使用:
Dir.pwd
对于运行脚本的目录:
File.dirname(__FILE__)
对于您创建的文件所在的目录:
f = File.new( "blah.rb", "w" )
# => #<File:blah.rb>
File.dirname f
# => "."
我希望这能回答你的问题。
如果你知道目录:
dir_name = "/my/amazing/project/"
# this returns an array of file names (no dot files) - but just the names.
files = Dir.new(dir_name).entries.reject{|f| f.start_with? "." }
# this will give you an array with each entry being the full path to each file.
files = Dir.new(dir_name).entries.reject{|f| f.start_with? "." }.map{|f| File.expand_path File.join( dir_name, f ) }
在 irb 中尝试上面的代码,只需替换dir_name
为目录路径,甚至"."
.