Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用带有org.springframework.batch.item.file.FlatFileItemWriter的pipe delimeter将数据写入文本文件_Spring_Spring Batch - Fatal编程技术网

无法使用带有org.springframework.batch.item.file.FlatFileItemWriter的pipe delimeter将数据写入文本文件

无法使用带有org.springframework.batch.item.file.FlatFileItemWriter的pipe delimeter将数据写入文本文件,spring,spring-batch,Spring,Spring Batch,当我在控制台中撬动数据时,它正在工作。 但当我试图在输出文本文件中写入数据时,它不起作用,但没有错误。 有谁能帮我解决这个问题吗 下面是我的代码:- Java类: 在文件中写入时应使用它 import org.springframework.batch.item.file.transform.FieldExtractor; import com.poc.customer.vo.Person; public class PersonFieldSetExtractor implements Fi

当我在控制台中撬动数据时,它正在工作。 但当我试图在输出文本文件中写入数据时,它不起作用,但没有错误。 有谁能帮我解决这个问题吗

下面是我的代码:-

Java类:

在文件中写入时应使用它

import org.springframework.batch.item.file.transform.FieldExtractor;

import com.poc.customer.vo.Person;

public class PersonFieldSetExtractor implements FieldExtractor<Person> {

    @Override
    public Object[] extract(Person person) {

        return new Object[] { person.getSrcId(), person.getSrcCode(),
                person.getFirstName(), person.getLastName(),
                person.getPincode(), person.getStreet()};
    }

}
import org.springframework.batch.item.file.transform.FieldExtractor;
导入com.poc.customer.vo.Person;
公共类PersonfielSetExtractor实现FieldExtractor{
@凌驾
公共对象[]摘录(个人){
返回新对象[]{person.getSrcId(),person.getSrcCode(),
person.getFirstName(),person.getLastName(),
person.getPincode(),person.getStreet()};
}
}
Java类: 这将在从文件读取之后和bean填充期间使用

import org.springframework.batch.item.file.mapping.FieldSetMapper;
import org.springframework.batch.item.file.transform.FieldSet;
import org.springframework.validation.BindException;

import com.poc.customer.vo.Person;

public class PersonFieldSetMapper implements FieldSetMapper<Person> {

    @Override
    public Person mapFieldSet(FieldSet fieldSet) throws BindException {

        Person person = new Person();
        person.setSrcId(fieldSet.readString(0));
        person.setSrcCode(fieldSet.readString(1));
        person.setFirstName(fieldSet.readString(2));
        person.setLastName(fieldSet.readString(3));
        person.setPincode(fieldSet.readString(4));
        //person.setStreet(fieldSet.readString(5));

        return person;
    }



}

public class Person implements Serializable, Comparable<Person> {

    @Override
    public int compareTo(Person arg0) {
        return this.firstName.compareTo(arg0.getFirstName());
    }

    private String srcId;
    private String srcCode;
    private String firstName;
    private String lastName;
    private String pincode;
    private String street;
    public String getSrcId() {
        return srcId;
    }
    public void setSrcId(String srcId) {
        this.srcId = srcId;
    }
    public String getSrcCode() {
        return srcCode;
    }
    public void setSrcCode(String srcCode) {
        this.srcCode = srcCode;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getPincode() {
        return pincode;
    }
    public void setPincode(String pincode) {
        this.pincode = pincode;
    }
    public String getStreet() {
        return street;
    }
    public void setStreet(String street) {
        this.street = street;
    }

}
import org.springframework.batch.item.file.mapping.FieldSetMapper;
导入org.springframework.batch.item.file.transform.FieldSet;
导入org.springframework.validation.BindException;
导入com.poc.customer.vo.Person;
公共类PersonFieldSetMapper实现FieldSetMapper{
@凌驾
公共人物映射字段集(字段集字段集)引发BindException{
Person=新人();
person.setSrcId(fieldSet.readString(0));
person.setSrcCode(fieldSet.readString(1));
person.setFirstName(fieldSet.readString(2));
person.setLastName(fieldSet.readString(3));
person.setPincode(fieldSet.readString(4));
//person.setStreet(fieldSet.readString(5));
返回人;
}
}
公共类Person实现了可序列化、可比较的{
@凌驾
公共整数比较(个人arg0){
返回这个.firstName.compareTo(arg0.getFirstName());
}
私有字符串srcId;
私有字符串代码;
私有字符串名;
私有字符串lastName;
私有字符串pincode;
私家弦街;;
公共字符串getSrcId(){
返回srcId;
}
公共void setSrcId(字符串srcId){
this.srcId=srcId;
}
公共字符串getSrcCode(){
返回src代码;
}
public void setSrcCode(字符串srcCode){
this.srcCode=srcCode;
}
公共字符串getFirstName(){
返回名字;
}
public void setFirstName(字符串firstName){
this.firstName=firstName;
}
公共字符串getLastName(){
返回姓氏;
}
public void setLastName(字符串lastName){
this.lastName=lastName;
}
公共字符串getPincode(){
返回pincode;
}
公共无效setPincode(字符串pincode){
this.pincode=pincode;
}
公共字符串getStreet(){
返回街;;
}
公共街道(字符串街){
这条街;
}
}
弹簧配置:-

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:batch="http://www.springframework.org/schema/batch" 
    xmlns:task="http://www.springframework.org/schema/task"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/batch
    http://www.springframework.org/schema/batch/spring-batch-2.2.xsd
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">



    <bean id="jobRepository"
        class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
        <property name="transactionManager" ref="transactionManager" />
    </bean>

    <bean id="transactionManager"
        class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />

    <bean id="jobLauncher"
        class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
        <property name="jobRepository" ref="jobRepository" />
    </bean>



  <batch:job id="personJob">
    <batch:step id="step1">
      <batch:tasklet>
        <batch:chunk reader="txtFileItemReader"  writer="txtFileItemWriter" commit-interval="1">
        </batch:chunk>
      </batch:tasklet>
    </batch:step>
  </batch:job>



<bean id="txtFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">


  <bean id="txtFileItemReader" class="com.poc.batch.util.FlatFileReader">
    <!-- Read a csv file -->
    <property name="resource" value="classpath:com/cts/poc/batch/resource/Test_Data.txt" />
    <property name="lineMapper" ref="lineMapper" />
  </bean>

  <bean id="lineMapper" class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
        <property name="fieldSetMapper" ref="fieldSetMapper" />
        <property name="lineTokenizer" ref="lineTokenizer" />
    </bean>


    <bean id="lineTokenizer" class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
        <property name="delimiter" value="|"/>
    </bean>

    <bean id="fieldSetMapper" class="com.poc.batch.util.PersonFieldSetMapper"/>



 <!--  Writer to write output txt file  -->
 <bean id="txtFileItemWriter" class="org.springframework.batch.item.file.FlatFileItemWriter">
    <property name="resource" value="file:com/cts/poc/batch/resource/Test_Out_Data.txt" />
    <property name="appendAllowed" value="true" />
    <property name="lineAggregator" ref="lineAggregator"/>
  </bean>


   <bean id="lineAggregator" class="org.springframework.batch.item.file.transform.DelimitedLineAggregator">
        <property name="delimiter" value="|" />
        <property name="fieldExtractor" ref="personFieldSetExtractor" />         
    </bean>

    <bean id="personFieldSetExtractor" class="com.poc.batch.util.PersonFieldSetExtractor"/>



</beans>


您在输出文件中观察到了什么?是空的吗?是否缺少分隔符?是否尝试使用不同的输出资源路径(如文件:c:/out.txt)?是否显示了正确的配置
txtFileItemReader
定义了两次(第一次,它缺少一个结束标记)。