这让我有些疯狂。我有以下代码,它可以读取csv文件并将其重新格式化为可复制粘贴的java数组格式:
CSVReader reader = new CSVReader(new FileReader(fileName), ',' , '"' , 0);
FileWriter writer = new FileWriter(outFile);
//Read CSV line by line and use the string array as you want
//Read all rows at once
List<String[]> allRows = reader.readAll();
//print table header
//Read CSV line by line and use the string array as you want
for(String[] row : allRows){
System.out.println(Arrays.toString(row));
writer.write("{");
for(int lcv = 0;lcv<row.length;lcv++){
if(lcv == row.length -1){
writer.write(row[lcv]);
}else{
writer.write(row[lcv]+",");
}
}
writer.write("},\n");
}
正如您所看到的,该代码将文件中的记录打印到控制台,并将其复制粘贴到文件中。代码可以正常工作,没有错误等。然而,创建的文件会在记录随机停止一半。我逐步检查代码,发现写入调用正在工作,最奇怪的是控制台可以很好地打印所有记录,这应该与创建的文件相对应。有人能解释为什么文件没有完成但控制台却完成了吗?
更多信息。初始文件有76行,约36KB。我认为问题在于达到了内存限制,因为它在第56行停止了。我重新运行了56-76(现在是1-20),它在第18行停止了。这让我感到困惑...