CsvParser流关闭错误

时间:2013-06-27 14:54:06

标签: csv groovy ioexception

所有。我正在尝试使用CsvParser解析CSV文件,但是我得到一个IOException:在第57行(~6500)中读取后出现流关闭错误。有谁知道是什么原因引起的?这是一段代码片段和错误:

#!/usr/bin/ groovy

package csvTest

@Grab ('com.xlson.groovycsv:groovycsv:1.0')
import com.xlson.groovycsv.CsvParser

def csvFile = new File("file.csv").withReader {
    CsvParser.parseCsv(it)
}

csvFile.each {
    println it
}

Caught: java.io.IOException: Stream closed
java.io.IOException: Stream closed
    at au.com.bytecode.opencsv.CSVReader.getNextLine(CSVReader.java:245)
    at au.com.bytecode.opencsv.CSVReader.readNext(CSVReader.java:212)
    at au.com.bytecode.opencsv.CSVReader$readNext.call(Unknown Source)
    at com.xlson.groovycsv.CsvIterator.hasNext(CsvIterator.groovy:72)
    at csvTest.CsvTest.run(CsvTest.groovy:12)

1 个答案:

答案 0 :(得分:2)

CsvParser是懒惰的,所以在请求时读取行(而不是将它们全部加载到内存中。

一旦Closure完成,withReader调用将关闭Reader

因此,当您尝试执行csvFile.each时,流已关闭。

这应该有效:

new File("file.csv").withReader {
    def csvFile = CsvParser.parseCsv( it )

    csvFile.each {
        println it
    }
}