我正在用java寫我的資料到csv檔案。下面是我的代碼
public static void writeAccountToFile(List< Map<String, Object>> list, String filePath) {
System.out.println("寫資料到csv檔案開始")。
try {
File file = new File(filePath)。
Writer writer = new OutputStream title class_">OutputStreamWriter(new FileOutputStream(file)。"UTF-8")。)
CsvSchema schema = null;
CsvSchema.Builder schemaBuilder = CsvSchema.builder()。
if (list != null && !list.isEmpty() ) {
for (String col : list.get(0).keySet() ) {
schemaBuilder.addColumn(col);
}
schema = schemaBuilder.build().withLineSeparator("
").withHeader()。
}
CsvMapper mapper = new CsvMapper()。
mapper.writer(schema).writeValues(writer).writeAll(list)。
writer.flush()。
} catch (IOException e) {
// TODO 自動生成的catch塊"寫資料到csv檔案結束")。
}
當我檢查我的結果檔案時,最后一行在賬戶名test3和test4中沒有""。
accountId, accountName, address
1111,"test1111111",England
2222,"test2222222",Tokyo
3333,test3,Italy
4444,test4,indo
這是我的輸入串列:
[{accountId=1111, accountName=test1111111, address=england}, {accountId=2222,
accountName=test2222222, address=tokyo}, {accountId=3333, accountName=test3,
地址=italy}, {accountId=4444, accountName=test4,
address=indo}]。
以下是我讀取csv檔案并將其分配給串列的代碼:
public static List<Map< String, Object>> loadFileAccount(String filePath) throws Exception {
List<Map<String, Object>> list = new ArrayList<>()。
removeBom(Paths.get(filePath))。
System.out.println("Load account data from csv start"/span>)。
File file = new File(filePath)。
Reader reader = new InputStream title class_">InputStreamReader(new FileInputStream(file)。"UTF-8")。)
Iterator<Map<String, Object>> iterator = new CsvMapper()
.readerFor(Map.class)
.with(CsvSchema.emptySchema().withHeader())
.readValues(reader)。
while (iterator.hasNext()) {
Map<String, Object> keyVals = iterator.next();
list.add(keyVals);
}
reader.close()。
System.out.println("Load account data from csv end"/span>)。
return串列。
}
我的代碼中有什么錯誤?
uj5u.com熱心網友回復:
看來你是對的,當字串較長時,它會添加引號。
所以為了避免不一致,你可以指定你是否需要引號,使用
CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS或CsvGenerator.Feature.STRICT_CHECK_FOR_QUOTING
這將總是添加雙引號:
這將總是添加雙引號。
CsvMapper mapper = new CsvMapper()。
mapper.configure(CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS, true)。
mapper.writer(schema).writeValues(writer).writeAll(list)。
另一個是永遠不要添加雙引號
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/310323.html
標籤:
下一篇:要求影像檔案大小
