Groovy中不使用append关键字向CSV文件追加数据的解决方法
Groovy 无append关键字实现CSV文件追加写入方案
问题根因
你给出的代码中变量a为字符串类型的文件路径,并非File对象,此时调用的append是String类的字符串拼接方法,不会对磁盘中的CSV文件执行任何写入操作,因此无法得到预期结果。
实现方案(全程不使用append关键字)
方案1:使用RandomAccessFile写入(适合任意大小文件)
通过RandomAccessFile定位到文件末尾写入内容,性能损耗小,支持大文件操作:
// 构造CSV文件对象 def csvFile = new File("F:\\abcd.csv") // 以读写模式打开文件 def accessFile = new RandomAccessFile(csvFile, "rw") // 移动指针到文件末尾 accessFile.seek(accessFile.length()) // 写入指定内容,明确设置UTF-8编码避免乱码 accessFile.write("server list\r\n".getBytes("UTF-8")) accessFile.write("abcd.na.admworld.com".getBytes("UTF-8")) // 关闭文件资源 accessFile.close()
方案2:内容拼接后全量覆盖写入(适合小体积CSV)
如果CSV文件体积较小,可以先读取原有内容,拼接新内容后全量覆盖写入:
def csvFile = new File("F:\\abcd.csv") // 读取文件原有内容,文件不存在/为空时返回空字符串 def originContent = csvFile.exists() ? csvFile.getText("UTF-8") : "" // 拼接待写入的新内容 def fullContent = originContent + "server list\r\nabcd.na.admworld.com" // 全量写入覆盖原文件 csvFile.setText(fullContent, "UTF-8")
注意事项
- Windows系统下换行符规范为
\r\n,不要使用\n\r,避免CSV读取工具识别格式异常 - 写入时明确指定字符编码,防止跨环境运行出现乱码问题
内容的提问来源于stack exchange,提问作者Pavani kandikuppa
相关产品推荐
相关产品推荐

