我的文件格式如下。每行都有单个项目,例如
RIC1
RIC2
RIC3
.
.
.
so on
我使用FlatFileItemReader来读取这些项目。这是配置
<beans:bean id="myLineMapper"
class="com.st.batch.foundation.MyLineMapper" />
<beans:bean id="myFileItemReader"
class="org.springframework.batch.item.file.FlatFileItemReader"
p:resource="file:${spring.tmp.batch.dir}/somename-#{jobParameters[date]}/items.txt"
p:lineMapper-ref="myLineMapper" scope="step" />
这是我的线路映射器,
public class MyLineMapper implements LineMapper<List<String>> {
public List<String> mapLine(String line, int lineNumber) throws Exception {
List<String> list = new ArrayList<String>();
list.add(line.trim());
return list;
}
}
在我的项目编写器中,我得到的项目用方括号括起来。我不知道这些括号的添加位置在哪里?
public class ImportExchangeItemWriter<T> implements ItemWriter<T>{
public void write(List<? extends T> items) throws Exception {
for (T item : items) {
System.out.println(item);
}
}
以下是输出:
[RIC1]
[RIC2]
[RIC3]
.
.
.
so on
如何将这些括号添加到项目中?有没有办法删除它?
答案 0 :(得分:0)
使用
工作
我不需要创建自定义行映射器,有默认实现org.springframework.batch.item.file.mapping.PassThroughLineMapper。
答案 1 :(得分:0)
这种情况正在发生,因为您错过了FieldSetMapper
来将您看到的列表内容映射到您想要的第一个也是唯一的元素。
public class MyFieldSetMapper implements FieldSetMapper<String> {
@Override
public String mapFieldSet(FieldSet fieldSet) throws BindException {
String myItem = fieldSet.readString(0);
return myItem;
}
}
并在XML配置中使用期望DefaultLineMapper
的{{1}}:
FieldSetMapper
答案 2 :(得分:0)
您可以使用这些方括号,因为LineMapper
方法中的mapLine()
会返回List<String>
。因此,正在阅读的每一行都被视为List<String>
。在Java中,打印List默认使用方括号来分隔列表的内容。