grails在内存中写入文件只写一行

时间:2013-08-21 19:38:50

标签: grails download

尝试编写多行文件然后下载:

def download() {
    file.write("line1\n")
    file.write("line2\n")
    response.setHeader "Content-disposition", "attachment; filename=testalex.txt"
    response.contentType = 'text-plain'
    response.outputStream << file.text
    response.outputStream.flush()
}

但是文件只显示line2。这是什么原因?谢谢!

2 个答案:

答案 0 :(得分:2)

根据the docs

  

写(字符串文本)
  将文本写入文件。

因此,每次使用write()时,您都会替换文件中的内容。您可以查看有关Input and Output的Groovy文档。例如:

file.withWriter { out ->
  out.writeLine("line1") //no need to add the \n, the out will handle.
  out.writeLine("line2")
}

答案 1 :(得分:2)

@ Sergio的方法或使用append代替“line2”:)

......
file.write("line1\n")
file.append("line2\n")
......

append将文字附加到文件末尾。我喜欢withWriter(@ Sergio的方法)。