Java 如何使用ItemReader将文件映射到行与行之间没有分隔符的对象

Java 如何使用ItemReader将文件映射到行与行之间没有分隔符的对象,java,spring,spring-batch,Java,Spring,Spring Batch,我正在使用SpringBatch的ItemReader读取文件 我的输入文件包含由分隔的字符串的长列表,如下所示: 2333,443445,5555,3344... 每个字符串都应该转换为对象 我如何定制ItemReader呢 我知道默认情况下我可以为列设置分隔符,但我只得到一列和 分隔符(,)不是用来分隔列,而是用来分隔记录 如何将每个字符串映射到该对象中: public class MyItemDTO{ private String itemId; public String ge

我正在使用SpringBatch的ItemReader读取文件

我的输入文件包含由
分隔的字符串的长列表,
如下所示:

2333,443445,5555,3344... 
每个字符串都应该转换为对象

我如何定制ItemReader呢

我知道默认情况下我可以为列设置分隔符,但我只得到一列和

分隔符(
)不是用来分隔列,而是用来分隔记录

如何将每个字符串映射到该对象中:

public class MyItemDTO{


private String itemId;

public String getItemId() {
    return itemId;
}

public void setItemId(String itemId) {
    this.itemId= itemId;
}

在您所描述的用例中,不需要定制
ItemReader
。使用
FlatFileItemReader
,您可以指定自定义
RecordSeparatorPolicy
。默认情况下,使用的策略由新行字符分隔(一行=一条记录)。但是,在您的情况下,它将由
分隔。您可以在这里的javadoc中阅读有关
RecordSeparatorPolicy
的更多信息:

我使用了以下
Groovy
代码:

new FlatFileItemReader(
        resource: new FileSystemResource(filePath),
        lineMapper: new DefaultLineMapper(
                lineTokenizer: new DelimitedLineTokenizer(
                        delimiter: ',',
                        names: ['itemId']
                ),
                fieldSetMapper: new BeanWrapperFieldSetMapper(
                        targetType: MyItemDTO
                )
        )
)

使用表示要读取的文件路径的字符串重新播放
filepath

您好,我读过相关内容,但仍然无法通过一个工作示例来理解。你介意给我举个例子吗?虽然这个代码片段可以解决这个问题,但它确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!
use DelimitedLineTokenizer class        
    DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();      
    tokenizer.setDelimiter(",");          

without delimiter use FixedLengthTokenizer class    
    FixedLengthTokenizer tokenizer = new FixedLengthTokenizer();    
    tokenizer.setNames( new String[]{"val1", "val2"} );   
    tokenizer.setColumns( new Range[]{new Range( 1, 4 ),new Range( 5, 10 )} );