我有以下代码:
<cfset csvFilename = 'myCSV.csv'>
<cfset fileWriter = createobject("java","java.io.FileWriter").init("#csvFileName#")>
<cfset csvWriter = createObject("java","com.opencsv.CSVWriter").init(fileWriter, ",")>
<cfset csvWriter.writeNext('{"1","2"}', true)>
<cfset csvWriter.flush()>
<cfset fileWriter.close()>
<cfset csvWriter.close()>
当我运行该页面时,我收到以下错误消息:
找不到writeNext方法。
没有具有指定方法名称和方法的方法 参数类型或writeNext方法使用参数重载 ColdFusion无法可靠解密的类型。 ColdFusion发现0 与提供的参数匹配的方法。如果这是一个Java对象 并且您验证了该方法存在,请使用javacast函数 减少歧义。
我搜索过互联网,似乎无法找到任何使用带有Coldfusion的csvWriter的例子,我不知道为什么它不起作用。我有一个csvReader和ReadNext的工作示例,但不是WriteNext。我做错了什么想法?我曾试图做一个javacast,但那也不起作用。
<cfset csvWriter.writeNext(javacast("string",'1,2'))>
我正在使用Coldfusion 11和opencsv-3.8.jar
答案 0 :(得分:1)
根据API,writeNext()的重载需要String[]
或字符串数组。 CF数组与Java有点不同,但它们是compatible。这些都可以起作用:
<cfset csvWriter.writeNext( ["1","2"], true)>
<cfset csvWriter.writeNext( javacast("String[]", ["3","4"]), javacast("boolean", true))>
顺便说一句,跳过对fileWriter.close()
的呼叫。当您致电CSVWriter.close()
时,它会为您关闭基础作家。调用两者都会导致错误。
<cfset csvFilename = 'myCSV.csv'>
如果没有完整路径,我不确定该文件将在何处结束。始终指定完整路径可以在以后节省大量的时间; - )