所有。我正在尝试使用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)
答案 0 :(得分:2)
CsvParser
是懒惰的,所以在请求时读取行(而不是将它们全部加载到内存中。
一旦Closure完成,withReader
调用将关闭Reader
。
因此,当您尝试执行csvFile.each
时,流已关闭。
这应该有效:
new File("file.csv").withReader {
def csvFile = CsvParser.parseCsv( it )
csvFile.each {
println it
}
}