gpt4 book ai didi

file - 某些行(虚线)使用 Groovy(Grails) 写入文件失败

转载 作者:行者123 更新时间:2023-12-01 06:17:44 25 4
gpt4 key购买 nike

我正在使用 Groovy 在 .csv 文件中执行大量写入。更具体地说,我有一个正在运行的 Quartz 作业,它创建了一些发送到 RabbitMQ 队列的 Map 消息。该队列由 10 个消费者使用,并导致生成一些字符串列表。对于列表中的每个元素,我只是将其写入一个管道分隔的 .csv 文件中。具有写入 .csv 文件的方法的实际服务是标准(单例)事务性 grails 服务。当我记录要写入的行时,一切都很好,但在文件中,有些行是“损坏的”。我的写作方式是:

def writeRowsToFile(List<String> rows, File file) {
rows.each {row->
file.append("${row}\n")
}
}

最初我使用的是:

file.withWriterAppend {out->
out.write(row.toString())
out.newLine()
}

也得到了同样的东西......

如果出现错误,所有行都会失败。可能是某种竞争条件、并发或者我不知道还有什么问题?

我们将不胜感激。

谢谢

最佳答案

您应该采用第二种方式,即:

def writeRowsToFile(List<String> rows, File file) {
file.withWriterAppend {out->
rows.eachWithIndex { row, idx ->

// It's probably \n chars in your strings
if( row ==~ /.*[\n\r]+.*/ ) {
println "Detected a CRLF char in rows[$idx]"
}

out.writeLine row
}
}
}

但是,你说这可能是“某种竞争条件”

多个线程是否写入同一个文件?

如果不是,则更有可能是你的数据中有\n个字符

关于file - 某些行(虚线)使用 Groovy(Grails) 写入文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5104074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com