2011-10-20 38 views
0

我有一個包含一系列的頭,每個具有的路徑對應於頭如何使自定義文件在Groovy

10gen 
C:\cygwin\home\pro-services\git\mongodb\mongo\client\gridfs.cpp 
C:\cygwin\home\pro-services\git\mongodb\mongo\client\model.cpp 
10gen .SH 
C:\cygwin\home\pro-services\git\mongodb\mongo\debian\mongod.1 
C:\cygwin\home\pro-services\git\mongodb\mongo\debian\mongo.1 

etc... 

我想創建一個文件列表的文本文件每個標題的新文件,並且該文件將包含原始大文件中標題下列出的相關路徑。我是Groovy的新手。我怎樣才能自動創建這些文件?

回答

1

事情是這樣的:如果該行是一個標題

def output 
new File("input.txt").eachLine { line -> 
    if (isHeader(line)) { 
     output?.close() 
     output = new PrintWriter(new FileWriter(line)) 
    } else { 
     output?.println(line) 
    } 
} 
output?.close() 

isHeader方法應返回true。

+0

謝謝ataylor。 「isHeader」如何知道該行是否爲頭文件?另外,在這裏做什麼?我可以在這裏看到總體思路,這很棒,但我在實施時遇到了問題。 'input.txt'中文件的格式是什麼,如C:\\ temp \\ dove.txt? – blaughli

+0

'?'使得調用爲安全的,即如果輸出爲空,則不調用該方法。這是在每次調用之前檢查null的快捷方式。對於我使用你的例子的文件格式; 'isHeader'取決於細節。由於文件名是從文件中讀取的,因此文件名不一定有反斜槓。如果他們是字符串文字,他們會需要它們。 – ataylor

+0

我應該有不同的措辭,雖然從我提供的文字來看,它可能是顯而易見的 - 通過「標題」我只是指一個標題下的所有相關文件的組織。所以從我提供的例子中,'10gen'將是我想用作groovy腳本創建的第一個文件的標題的第一個「標題」。在那個文件中,我想存儲在'10gen'(「C:\ cygwin \ home ...)下面列出的兩個文件,然後腳本將會創建一個帶有第二個」頭文件「('10gen .SH')的新文件作爲一個標題等... – blaughli

相關問題