2013-08-28 22 views
5

Ben Jackson 2.2.2 (özellikle jackson-dataformat-csv) kullanarak bir CSV dosyası yazmaya çalışıyorum ama ';' kullanmak için alamıyorum dosyalayıcı olarak.Jackson csv yazıcısı doğru sütun ayırıcı kullanmıyor

i yazar başlatmak için aşağıdaki kodu kullanıyorum: i böyle bir şey yapmak csv oluşturmak için

CsvMapper mapper = new CsvMapper(); 
CsvSchema schema = mapper.schemaFor(MyObject.class); 
schema = schema.withColumnSeparator(CSV_COLUMN_SEPARATOR); 

ObjectWriter myObjectWriter = mapper.writer(schema); 

aşağıdadır: sonuç dosyası hala varsayılan 'kullandığı Ancak

FileOutputStream tempFileOutputStream = new FileOutputStream(tempFile); 
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(tempFileOutputStream, STREAM_BUFFER_SIZE); 
writerOutputStream = new OutputStreamWriter(bufferedOutputStream, FILE_ENCODING); 

myObjectWriter.writeValue(writerOutputStream, listOfMyObjects); 

, 'sütun ayırıcı olarak. Nesneyi debugger ile kontrol ettiğimde ';' Nesne içinde ayırıcı olarak ayarlandı, bu yüzden çalışması gerektiğini düşünüyorum. Neyi yanlış yaptığımı bilen var mı, yoksa bu bir böcek mi?

+2

Nevermind web'de bir yanıt aramaktayım ve bu özelliğin 2.2.2 sürümünde çalışmadığını öğrendim. Bu, 4 gün önce piyasaya sürülen ancak maven depolarında bulunmayan 2.2.3 sürümünden beri çalışıyor henüz. – Ozzie

+1

Birkaç gün boyunca orada olmalıydı: http://repo1.maven.org/maven2/com/fasterxml/jackson/dataformat/jackson-dataformat-csv/2.2.3/ – StaxMan

cevap

2

Eğer bir alternatif istiyorsanız, kullanmak Open CSVCSVWriter:

public CSVWriter(Writer writer, char separator) 
+0

Evet biliyorum. Ben OpenCSV'yi tercih ederim ama bir meslektaşı zaten Jackson ile işlevselliği kurdu, böylece ben de öyle tutacağım. – Ozzie

1

yapmanız gereken tek şey withColumnSeparator (sürümü 2.9.3 için) yönteminin çıktısı alınmaya geçerli:

schema = schema.withColumnSeparator(';'); 
mapper.writer(schema).writeValue(file, objectList); 

Bu, istediğiniz ayırıcıyı kullanmanıza izin verir.