在";普通的";选项卡将csv文件附加到标准输入。将CSV解析器附加到标准输入。
从解析器中提取CSV记录可以获得所有文件内容,但不会检测到EOF。opencsv--5.5.2和apache-csv-1.9.0(以及我公司的遗留csv解析器(都会发生这种情况。
例如,对于opencsv:
var isr = new InputStreamReader(System.in);
var br = new BufferedReader(isr);
var reader = new CSVReader(isr /* or br */);
while ( (csv_record = reader.readNext()) != null) {
// foo
}
读取所有csv行后挂起在FileInputStream.readBytes中。调用堆栈:
Thread [main] (Suspended)
owns: BufferedInputStream (id=75)
owns: InputStreamReader (id=22)
FileInputStream.readBytes(byte[], int, int) line: not available [native method]
FileInputStream.read(byte[], int, int) line: 279
BufferedInputStream.read1(byte[], int, int) line: 290
BufferedInputStream.read(byte[], int, int) line: 351
StreamDecoder.readBytes() line: 284
StreamDecoder.implRead(char[], int, int) line: 326
StreamDecoder.read(char[], int, int) line: 178
InputStreamReader.read(char[], int, int) line: 185
BufferedReader.fill() line: 161
BufferedReader.read() line: 182
CSVReader.isClosed() line: 399
CSVReader.getNextLine() line: 343
CSVReader.primeNextRecord() line: 235
CSVReader.flexibleRead(boolean, boolean) line: 598
CSVReader.readNext() line: 204
Main.main(String[]) line: 48
所有csv解析器都挂在FileInputStream.readBytes中,具有类似的堆栈跟踪。
所有变体都在eclipse之外运行良好,使用重定向。
这是一个已知的Eclipse错误吗?我找了一下,什么也没找到。
周围有已知的工作吗?
greg-449的帽子提示,这几乎可以肯定是一个eclipse错误:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=513713