Eclipse:CSV解析标准输入时未检测到EOF



在";普通的";选项卡将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

最新更新