获取空的 CSV 文件

Getting empty CSV files

我正在尝试将 hashmap 数据写入 CSV 文件,但我看到生成了空文件。这是我正在使用的以下代码:

String fileName
    for (String key : concurrentHashMap.keySet()) {
        logInfo(key + ": ")//gives the name of the file
        logInfo("concurrentHashMapKey" + concurrentHashMap.get(key))
        fileName = key
        logInfo("fileName: " + fileName)
        helpers.writeHashMapToCsv(concurrentHashMap, fileName)
    }

public void writeHashMapToCsv(ConcurrentHashMap<String, String> collectedCSV, String fileName) throws Exception {
        String eol = System.getProperty("line.separator")
        try{
            Writer writer = new FileWriter(".\baseline-files\" + fileName)
            for (Map.Entry<String, String> entry : collectedCSV.entrySet()) {
                println "entry = $entry"
                writer.append(entry.getKey())
                        .append(',')
                        .append(entry.getValue())
                        .append(eol)
            }
        } catch (IOException ex ) {
            ex.printStackTrace(System.err)
        }
    }

谁能帮我看看我做错了什么?

注意: concurrentHashMap 大小 =2

concurrentHashMap = [NetworkLeakage_Main_crosstab.csv:服务网络中总付款的百分比没有 Pro,站点类型总付款没有 Pro 网络外的家庭健康 1% $247,870 家庭健康拥有 6% $1,306,259 网络外的专业护理机构 4% $860,545 拥有专业护理机构 18% $3,919,193 , IP_RehabSNF_Profiles_crosstab.csv:设施站点类型网络隶属关系集数总付款占总付款的百分比平均集付款 ALOS CMS 评级 LORRETTA 医院主播拥有 28 $344,392 2% $12,300 3
LORRETTA 医院网络外家庭健康 87 $14,358 0% $2,872
LORRETTA HOSPITAL Home Health Owned 19 $2,981 0% $2,981
LORRETTA HOSPITAL 网络外门诊病人 77 $3,706 0% $71
LORRETTA 医院 门诊自有 1,593 $149,194 1% $288
]

所以这里有 2 组键(文件名)和值(数据),我需要为其生成以下 2 个文件: 1. NetworkLeakage_Main_crosstab.csv

  1. IP_RehabSNF_Profiles_crosstab.csv

添加 writer.close() 作为您的 Writer 缓冲区数据。

最好加入finally块:

} catch (IOException ex) {
    ex.printStackTrace(System.err)
} finally {
    writer.close();
}

改起来更简单:

        Writer writer = new FileWriter(".\baseline-files\" + fileName)
        for (Map.Entry<String, String> entry : collectedCSV.entrySet()) {
            println "entry = $entry"
            writer.append(entry.getKey())
                    .append(',')
                    .append(entry.getValue())
                    .append(eol)
        }

        new File("./baseline-files/$fileName").withWriter { writer ->
            collectedCSV.each { key, value ->
                writer.writeLine "$key,$value"
            }
        }

这将自动为您关闭编写器