我寫了一個腳本,在常規遞歸地找到與某些名稱的指定目錄下文件的Java測試文件,代碼的有關部分是:爲什麼Groovy無法找到我的文件?
def projectRootDirectory = args.length ? new File(args[0]) : new File(System.getProperty("user.dir"))
def srcFilesCount = 0, testFilesCount = 0, srcLinesCount=0, testLinesCount=0
def srcFileSubstringPattern = '.java'
def testFileSubstringPattern = 'Test.java'
projectRootDirectory.eachDirRecurse() { dir ->
dir.eachFile {
if (it.name.endsWith(testFileSubstringPattern) || it.name ==~ /Test.*java/ ||
it.name.endsWith('Tests.java') || it.name.endsWith('TestCase.java')) {
//println "Test file found: " + it.name
testFilesCount++
it.eachLine { testLinesCount++ }
} else if (it.name.contains(srcFileSubstringPattern)) {
srcFilesCount++
it.eachLine { srcLinesCount++ }
}
}
}
它發現在回購已存在的文件,其使用克隆SVN,例如someTestCase.java
,但是當我通過使用命令touch dummyTestCase.java
在Windows 7中通過Cygwin或通過Windows 7資源管理器right click -> New -> Text Document
選項創建一些新的並將其重命名爲TestDummy.java
之類的東西時,它找不到它們。腳本也以相同的方式處理各個文件的副本,即它找到已經存在但不是我創建的新文件的副本。我甚至打開文件權限,以最大限度地創建新創建的文件,但沒有改變。而通過Cygwin的BASH find
命令總能找到所有文件沒有任何問題。我已經確認使用診斷打印語句腳本正在查找正確的目錄。我甚至通過讓腳本在那裏創建一些文件並確認它們在正確的位置創建來證實了這一點。
你能顯示你的查找文件代碼嗎? – aristotll
你可以把從目錄加載文件的代碼。通常情況下,上面沒有問題,除非有大小寫問題。 –
@aristotll我編輯問題以顯示更多代碼。 –