我传入一个CSVPrinter打印机的方法和内部循环我正在调用printRecord方法。以下是该方法的片段。CSVPrinter printRecord java.io.IOException:流关闭
private void printToCsv(String currentDate, LinkedHashMap<String, LinkedList<CMonthlyStats>> contracts, CSVPrinter printer){
List<String> activeContracts = ContractMonthlyStatsReader.getListOfActiveContracts(currentDate, contrs);
for (String activeContract: activeContracts){
CMonthlyStatsR report = getCMonthlyStatsR(currentDate, activeContr, contracts.get(activeContr));
try {
printer.printRecord(
report.getAID(),
report.getMD(),
report.getAL(), report.getEL(),
ReportUtil.getMatchValue(),
report.getAFL(), report.getEFL(),
ReportUtil.getMatchValue(),
report.getAPF(), report.getEPF(),
ReportUtil.getMatchValue()
);
printer.flush();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
打印机正在被另一个方法中以下列方式的主要方法初始化:
public void Main(){
.....
CSVFormat format = getformatWithHeaders();
final CSVPrinter printer = getCSVPrinter(format);
.....
for(String string: Strings){
.......
printToCsv(currentDate, contrs, printer);
.......
}
}
片段getCSVPrinter(格式)的方法:
private CSVPrinter getCSVPrinter(CSVFormat format){
try (final FileWriter newWriter = new FileWriter(System.getProperty("output.file"))){
try(final CSVPrinter printer = new CSVPrinter(newWriter, format)){
return printer;
}
}
catch (IOException e){
e.printStackTrace();
}
return null;
}
页眉打印到输出文件,但每次有记录正在尝试打印时,我得到java.io.IOException: Stream closed
。处理IO一直是我的噩梦。请帮忙!
的CSVPrinter是org.apache.commons.csv
@sophist_pt我添加了一个例子,它使用一个LAMDA表达式以适应您的需求。试试看... –