Groovy 如何将文本追加到文件的新行

Groovy 如何将文本追加到文件的新行,groovy,Groovy,为什么下面的Groovy代码不在新行中追加“hello Reach f = new File('myfile.txt') f.append('hello again!\n') 这会在最后一行之后添加到myfile.txt,但不会添加到新行。如何将文本追加到新行?您始终可以通过 f = new File('myfile.txt') f.append('hello again!\n') System.getProperty("line.separator") 因此,将其添加到文本之前您应该将\

为什么下面的Groovy代码不在新行中追加“hello Reach

f = new File('myfile.txt')
f.append('hello again!\n')

这会在最后一行之后添加到myfile.txt,但不会添加到新行。如何将文本追加到新行?

您始终可以通过

f = new File('myfile.txt')
f.append('hello again!\n')
System.getProperty("line.separator")

因此,将其添加到文本之前

您应该将
\n
放在第一位。这样,您的换行符将写在文本之前:

f.append('\nhello again!')

Groovy写入文件的简明语法:

f << '\n' << 'hello again'

f这是另一种方法。在这种情况下,不必手动添加换行符

File greetingsFile = new File("myfile.txt")
greetingsFile.withWriterAppend{ out ->
    out.println 'hello again!'
}

我在groovy控制台上进行了尝试,我也遇到了同样的问题!根据@MidoDev的回答,您是否尝试过使用操作系统的行分隔符而不是“\n”?您能举个例子吗?f.append(system.getProperty(“line.separator”)+“hello reach!”)行分隔符是在系统属性中定义的,并不总是“\n”maybe“\r\n”因此,在本例中,我们使用系统分隔符。您的意思是在-->f.append('hello reach!\n')行之前添加行“system.getProperty(“line.separator”),(很抱歉,我在groovy中是一个非常新的问题)f.append(system.getProperty(“line.separator”)“+'hello reach!\n'))如果您正在构建大量字符串,那么您可能应该执行如下操作:def nl=System.getProperty(“line.separator”);之后,您的代码将显示为:f.append(${nl}你好!)。它将允许您创建一个可以在许多输出语句中使用的短模式。请参阅这是否在后台使用StringBuilder?我认为这相当于一系列的
f.append(..)
调用,如
f.append('\n');f.append('hello reach'))所以答案是使用了在
f
中实现的某种其他类型的缓冲。它不附加,而是重新写入整个文件