获取空的 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
- 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"
}
}
这将自动为您关闭编写器
我正在尝试将 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
- 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"
}
}
这将自动为您关闭编写器