2014-12-26 64 views
1

我是Groovy新手。我希望能夠找到提供的文件的最新版本。我有一個起始文件夾,需要在所有從屬文件夾中遞歸搜索該文件。相同的文件名可以在多個文件夾中,我的目標是獲取最新版本。我認爲關鍵是eachDirRecurse和eachFileMatch,但不太清楚如何將它們放在一起以獲得最新版本的文件。Groovy通過遞歸目錄搜索找到最新版本的文件

+0

而你如何識別該文件的一個版本? – fge

回答

1

假設您想使用相同名稱比較文件的上次修改日期:使用eachFileRecurse來迭代所有文件。然後過濾相同的問題。接下來比較「當前」。例如:

// create some test files named `t` in `t[123]` dirs 
['t3','t1','t2'].each{ 
    (it as File).with{ 
     new AntBuilder().delete(dir:it) // get rid of existing 
     mkdir() // create new one 
    } 
    new File("$it/t").write "t" // write text file 
    Thread.sleep(1000) // sleep to have different modification times 
} 

def hit // the found "current" 
def last // the highest "current" 
new File(".").eachFileRecurse{ 
    if (it.name=='t') { // check for your filename here 
     def l = it.lastModified() // your comparsion for "current"; just java API in this case 
     if (last<l) { 
      last = l 
      hit = it 
     } 
    } 
} 

assert hit==new File("./t2/t")