2011-09-25 36 views
0

我正在處理這個ruby腳本,我必須遞歸查看從一個特定目錄開始的所有子目錄。但由於某些原因FileTest.directory?似乎只有它是否位於同一文件夾中的腳本目錄和FileTest.directory的奇怪行爲

def files(start) 
    dir = Dir.open (start) 
    dir.each do |x| 
    p "#{x}: #{FileTest.directory?(x)}" 
    if FileTest.directory?(x) && x != '.' && x != '..' 
     start = x 
     files (start) 
    end 
    end 
end 
files '.' 

認爲我的目錄結構如下認識到一個目錄:在當前目錄中的我有一個文件a.txt中和兩個目錄中稱爲「B」和drct2。 'b'包含另一個目錄'c','drct'包含另一個目錄'dir3'。上面的代碼從當前目錄運行時會將'b'&'drct2'識別爲目錄,但不識別其子目錄。任何人都可以想到爲什麼FileTest.directory的原因?是這樣表現?

回答

0

你需要給一個完整路徑FileTest,因爲它的工作原理相對於您的當前目錄

所以,如果你有迪拉 - > DIRB - > filec你需要運行:

FileTest.directory?('dira/dirb') 

和不只是

FileTest.directory?('dirb') 

順便說一句,我建議你看看Dir.glob(「**/*」)方法 - 有一個很好的機會,它做了你需要做什麼外的開箱。