2011-10-20 36 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

相关问题