Groovy 删除文本文件中的行

Groovy 删除文本文件中的行,groovy,Groovy,我正在Groovy中读取一个文本文件: new File(testprojectDir + '/Testdata///' + filename).withReader('UTF-8') { reader -> def line while ((line = reader.readLine()) != null) { log.info "${line}" } } 文本文件生成如下所示: 123 456 789 我的问题是,我想删除刚才红色的那条线 示例:1

我正在Groovy中读取一个文本文件:

new File(testprojectDir + '/Testdata///' + filename).withReader('UTF-8') { reader ->
def line
    while ((line = reader.readLine()) != null) { 
        log.info "${line}"
    }
}
文本文件生成如下所示: 123 456 789

我的问题是,我想删除刚才红色的那条线

示例:123在变为红色后将被删除

然后继续到下一行,读取该行并删除该行保存相同的文本文件,直到该文件不再有行,这意味着文本文件为空,每删除一行


我该怎么做

您可以使用输出文件

def ofile = new File(outputFile)
new File(testprojectDir + '/Testdata///' + filename).withReader('UTF-8') { reader ->
    def line
    while ((line = reader.readLine()) != null  && !line.contains("text i don't want")) {
        log.info "${line}"
        ofile.append(line)
    }
}
如果要在适当的位置执行此操作,请执行以下操作:

def fileA = new File("src/file.txt")
List data = fileA.readLines()

fileA.text = ''

data.each { line ->
    if (!line.contains("b")) {
        log.info "${line}"
        fileA.append(line) + "\n"
    }
}

好-所以我不能保存到同一个文件?我必须创建一个新文件吗?您可以在读取所有带有readLines的行后,用filename.text=截断该文件,然后将这些行附加到该文件中,减去要忽略的内容。如果出现问题,数据将丢失。文件大小也很重要。感谢您更新的解决方案@ou_ryperd如果我正在查找字母b,您的解决方案会起作用,但它不会删除刚刚读取的包含123的行?我给了您一个工作示例。让它在你的数据上运行取决于你。还有一个问题@ou_ryperd-如果我只想阅读提到的文件中的第一行?我怎样才能做到?尝试使用List data=fileA.readLines.get1