我试图使用groovy File
操作来替换或附加到某一行,而不是附加到文件的末尾。
有没有办法做到这一点?
写入覆盖现有文件时,append
会添加到文件末尾:
def file = new File("newFilename")
file.append("I wish to append this to line 8")
答案 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')