提问者:小点点

Coldfusion opencsv csvWriter - I get writeNext Method is not find


我有以下代码:

<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 函数来减少歧义。

我已经搜索了互联网,似乎找不到任何将csvWriter与Coldfusion一起使用的示例,我不确定为什么它不起作用。我有一个csvReader和ReadNext的工作示例,但没有WriteNext。对我做错了什么有什么想法吗?我尝试做一个javacast,但也没有用。

<cfset csvWriter.writeNext(javacast("string",'1,2'))>

我正在使用带有opencsv-3.8的Coldfusion 11.jar


共1个答案

匿名用户

根据 API 的说法,writeNext() 的重载需要一个 String[] 或一个字符串数组。CF数组与Java的略有不同,但它们是兼容的。以下任一方法都有效:

<cfset csvWriter.writeNext( ["1","2"], true)>
<cfset csvWriter.writeNext( javacast("String[]", ["3","4"]), javacast("boolean", true))>

顺便说一句,跳过对fileWriter.close()的调用。当你调用 csvwriter.close() 时,它会为你关闭底层编写器。同时调用两者将导致错误。

如果没有完整的路径,我不确定该文件最终会在哪里结束。始终指定完整路径可以节省很多以后的挠头问题;-)