У меня есть программа весенней партии, в которой я пишу из базы данных в файл фиксированного формата.База данных весной партии в файл с фиксированным файлом - проблема с выходом в файл
Таблица моей базы данных состоит из 5 столбцов. Все столбцы содержат описание некоторых продуктов. Колонка имеет тип varchar с каждым размером 200.
Я читаю описания из столбцов в моем pojo как 5 свойств строки, а именно: desc1, desc2, desc3, desc4, desc5.
Мой деталь писатель выглядит следующим образом:
<beans:bean id="DbToFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
<beans:property name="resource" value="file:c:\TestData\output.dat" />
<beans:property name="lineAggregator">
<beans:bean class="org.springframework.batch.item.file.transform.FormatterLineAggregator">
<beans:property name="fieldExtractor">
<beans:bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<beans:property name="names" value="desc1, desc2, desc3, desc4, desc5" />
</beans:bean>
</beans:property>
<beans:property name="format" value="%-20s%-30s%-30s%-30s%-30s" />
</beans:bean>
</beans:property>
</beans:bean>
Как показано Я хочу DESC1 быть в фиксированном поле длины 20 символов и DESC2 через desc4 в фиксированной длины поля 30 символов каждый в файл.
Однако проблема заключается в том, что я получаю всю строку desc независимо от ее размера. То есть, если desc1 содержит 40 символов из базы данных, он также будет содержать 40 символов в файле.
Я чувствую, что он должен принимать только первые 20 символов и игнорировать остальные.
В чем проблема? Это ошибка, или я делаю что-то неправильно?
Спасибо за чтение!
Я думаю, что я где-то читал, что% 5s означает, что строка 5 помещается в поле с 5 символами с правильным дополнением, а% -5s означает то же самое с левым дополнением. однако, ваш ответ правильный ... – Nik
Что я хочу, чтобы столбец был точным 10 символов, независимо от того, является ли строка <10 символов, равно 10 символам или> 10 символов ... я должен поставить% -10.10 в дело ??? – Nik
это будет% -10.10s, см. Formatter Javadoc :-) –