diff --git a/gh1064/pom.xml b/gh1064/pom.xml
new file mode 100644
index 0000000..240a6f9
--- /dev/null
+++ b/gh1064/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ com.example
+ demo
+ 0.0.1-SNAPSHOT
+ demo
+
+
+ UTF-8
+ 1.8
+ 4.2.1.RELEASE
+ 3.8.1
+
+
+
+
+ org.springframework.batch
+ spring-batch-core
+ ${spring-batch-core.version}
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ ${java.version}
+ ${java.version}
+
+
+
+
+
+
diff --git a/gh1064/src/main/java/com/example/demo/FixedLengthBufferedReader.java b/gh1064/src/main/java/com/example/demo/FixedLengthBufferedReader.java
new file mode 100644
index 0000000..b244539
--- /dev/null
+++ b/gh1064/src/main/java/com/example/demo/FixedLengthBufferedReader.java
@@ -0,0 +1,40 @@
+package com.example.demo;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.Reader;
+
+public class FixedLengthBufferedReader extends BufferedReader {
+
+ public static final int DEFAULT_LINE_LENGTH = 32;
+ private int length;
+
+ public FixedLengthBufferedReader(Reader in) {
+ this(in, DEFAULT_LINE_LENGTH);
+ }
+
+ public FixedLengthBufferedReader(Reader in, int length) {
+ super(in);
+ this.length = length;
+ }
+
+ // FIXME quick and dirty: add sanity checks, etc
+ @Override
+ public String readLine() throws IOException {
+ int next = read();
+ if (next == -1) {
+ return null;
+ }
+ StringBuilder buffer = new StringBuilder();
+ buffer.append((char)next);
+ for (int i = 1; i < length; i++) {
+ next = read();
+ if (next != -1) {
+ buffer.append((char)next);
+ } else {
+ break;
+ }
+ }
+ return buffer.toString();
+ }
+}
diff --git a/gh1064/src/main/java/com/example/demo/MyJob.java b/gh1064/src/main/java/com/example/demo/MyJob.java
new file mode 100644
index 0000000..a4a834d
--- /dev/null
+++ b/gh1064/src/main/java/com/example/demo/MyJob.java
@@ -0,0 +1,59 @@
+package com.example.demo;
+
+import java.io.InputStreamReader;
+
+import org.springframework.batch.core.Job;
+import org.springframework.batch.core.JobParameters;
+import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
+import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
+import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
+import org.springframework.batch.core.launch.JobLauncher;
+import org.springframework.batch.item.ItemWriter;
+import org.springframework.batch.item.file.FlatFileItemReader;
+import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder;
+import org.springframework.batch.item.file.mapping.PassThroughLineMapper;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
+
+@Configuration
+@EnableBatchProcessing
+public class MyJob {
+
+ @Bean
+ public FlatFileItemReader itemReader() {
+ return new FlatFileItemReaderBuilder()
+ .name("fragmentReader")
+ .resource(new ClassPathResource("data.txt"))
+ .lineMapper(new PassThroughLineMapper())
+ .bufferedReaderFactory((resource, encoding) ->
+ new FixedLengthBufferedReader(new InputStreamReader(resource.getInputStream(), encoding)))
+ .build();
+ }
+
+ @Bean
+ public ItemWriter itemWriter() {
+ return items -> items.forEach(System.out::println);
+ }
+
+ @Bean
+ public Job job(JobBuilderFactory jobs, StepBuilderFactory steps) {
+ return jobs.get("job")
+ .start(steps.get("step")
+ .chunk(2)
+ .reader(itemReader())
+ .writer(itemWriter())
+ .build())
+ .build();
+ }
+
+ public static void main(String[] args) throws Exception {
+ ApplicationContext context = new AnnotationConfigApplicationContext(MyJob.class);
+ JobLauncher jobLauncher = context.getBean(JobLauncher.class);
+ Job job = context.getBean(Job.class);
+ jobLauncher.run(job, new JobParameters());
+ }
+
+}
diff --git a/gh1064/src/main/resources/data.txt b/gh1064/src/main/resources/data.txt
new file mode 100644
index 0000000..9f4d667
--- /dev/null
+++ b/gh1064/src/main/resources/data.txt
@@ -0,0 +1 @@
+Sale012016 1 00000011000000000Sale022017 2 00000022000000000Sale032018 3 00000033000000000