2012-06-30 33 views
1

例如,我的工作目录名为“abc”(空目录),在这里,我启动了一个ruby脚本,它将在当前目录下创建一个新的目录和文件,像这样的“abc/a/a.file”。当它需要在这个ruby脚本的相同进程(从不关闭)读取这个文件时,它不知道它(新文件)。所以,我需要告诉当前的ruby进程来刷新自己已知的当前工作目录。创建新文件后flash当前工作目录

我不能在谷歌得到任何答案,谢谢有人可以帮助这个问题。 我只是让当前进程知道并重新读取自己创建的新文件。

回答

1

对于进程正在使用当前目录:

File.dirname(__FILE__) 

对于您已经创建了一个文件在目录:

Dir.pwd 

对于目录的脚本运行:

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,甚至"."

+0

但是,该文件是由ruby调用的其他程序创建的,ruby的进程无法知道该文件将在启动后创建,因此,如何告诉ruby进程某处有多个文件需要创建。 – coolesting

+0

Ruby脚本传递给另一个进程的参数是什么?即目录路径,目录名称,文件路径,文件名称......? – iain

+0

ruby​​脚本将目录名称传递给其他进程,然后将在该目录中创建许多文件。 – coolesting

相关问题