Amb*_*ari 2 java spring batch-file spring-batch
我正在学习春季批,我有读者,映射器和作家的基本思想.现在我的当前要求是从文件中读取每一行,压缩数据并在基于gigaspace的内存网格中写入.
我知道行映射器是iteam reader的必需属性.我没有使用创建映射器,我需要做的就是读取该行并将其发送给编写器以在网格中写入.那么我怎样才能跳过行映射器或者我如何阅读普通线.目前我已经做过类似的事情,这似乎不是理想的解决方案.
public class ShrFileMapper implements FieldSetMapper<SpaceDocument> {
@Override
public SpaceDocument mapFieldSet(FieldSet fieldSet) throws BindException {
String positionId = fieldSet.readString(0);
StringBuffer line = new StringBuffer();
for (String fieldValue : fieldSet.getValues()) {
line.append("\t").append(fieldSet);
}
// logic for compression
SpaceDocument spaceDocument = new SpaceDocument("shr.doc");
spaceDocument.setProperty("id", positionId);
spaceDocument.setProperty("payload", compressedString);
return spaceDocument;
}
}
Run Code Online (Sandbox Code Playgroud)
San*_*r_M 10
假设您使用的是FlatFileItemReader,则需要提供资源和LineMapper.由于您不想将输入行转换为其他任何您不需要LineTokenizer的行,您只想通过原始输入.有关更多信息,请查看官方文档:
http://docs.spring.io/spring-batch/reference/html/readersAndWriters.html#flatFileItemReader
Spring已经提供了这样的功能.请查看PassThroughLineMapper https://github.com/spring-projects/spring-batch/blob/master/spring-batch-infrastructure/src/main/java/org/springframework/batch/item/file/mapping/PassThroughLineMapper. java的
public class PassThroughLineMapper implements LineMapper<String>{
@Override
public String mapLine(String line, int lineNumber) throws Exception {
return line;
}
}
Run Code Online (Sandbox Code Playgroud)
这门课完全符合你的需要!
| 归档时间: |
|
| 查看次数: |
3800 次 |
| 最近记录: |