使用groovy附加到文件

时间:2016-01-19 16:15:19

标签: groovy

我试图使用groovy File操作来替换或附加到某一行,而不是附加到文件的末尾。

有没有办法做到这一点? 写入覆盖现有文件时,append会添加到文件末尾:

def file = new File("newFilename")
file.append("I wish to append this to line 8")

2 个答案:

答案 0 :(得分:4)

通常,使用Java和Groovy文件处理时,只能附加到文件末尾。虽然您可以在任何地方覆盖数据而不会改变后面的位置,但无法插入信息。

这意味着要附加到不在文件末尾的特定行,您需要重写整个文件。

例如:

def file = new File("newFilename")
new File("output").withPrintWriter { out ->
    def linenumber = 1
    file.eachLine { line ->
        if (linenumber == 8)
            out.print(line)
            out.println("I wish to append this to line 8")
        } else {
            out.println(line)
        }
        linenumber += 1
    }
}

答案 1 :(得分:1)

对于小文件,您可以使用以下代码:

def f = new File('file')
def lines = f.readLines()
lines = lines.plus(7, "I'm a new line!")
f.text = lines.join('\n')