Spring BatchのSample(固定長フォーマットファイル読み書き)(六)
7911 ワード
回転:http://www.cnblogs.com/gulvzhe/archive/2011/12/17/2291076.html
前編のSpring Batchについて、Spring BatchのXMLファイルの読み書き操作について述べました. 本文は完全な例を通して、Spring Batchを使って固定された長いフォーマットのファイルを読み書きすることについて議論します.例は、前の例に続き、4つのフィールドを含むTXTファイル(ID、Name、Age、Score)を読み、読み出したフィールドを簡単に処理し、他のTXTファイルに出力する.
工事の構造は下の図のようです.
appication Contect.xmlとlogl 4 j.xmlの前の文はすでに述べましたが、ここでは贅を要しません.
本論文の核心配置ファイルbatch.xmlの内容は以下の通りである.
33-49行には、読み出し処理の詳細が設定されています.固定長フォーマットとcsvフォーマットはいずれもflatファイル形式ですので、固定長フォーマットファイルを読み込むにもSpring Batchを使用して提供されるコアクラスFlatFileItemReaderが必要です.このような配置は「Spring BatchのSample(CSVファイル操作)」(四)にあります. 》で詳細に説明しましたが、オンラインTokenizerの構成に注意してください.CSVファイルを読み込む際にはDelimitedLine Tokenizer類を使います.しかし、固定された長いフォーマットのファイルを読み込むには、52-56行のようにFixedLengthTokenizerを使用します.そのcolumnsはどのように記録情報を分割しますか?つまり、どの項目の情報を指定します.(注意:列数の合計長さがファイル記録長と異なる場合、エラーが発生します.範囲に注意してください.)属性namesは各項目の名前を指定します.名前は44行のprototypeBenName属性で指定されたPojo属性名と同じです.
59-76行には、書き込み処理の詳細が設定されています.固定長フォーマットのファイルは、CSV形式のファイルを書くのと同様に、Spring Batchで提供されるコアクラスFlat FileItemWriterを使用しています.ここでは説明しなくてもいいです.ただし、ラインAggator属性はFormaterLine Agregator類を使用しています.このようなフォーマットは、各項目の長さと書式を指定できます.
batch.xmlファイルには固定長ファイルと書き込みが配置されています.読んだ後、書く前の処理は、所定のFixedlength Processorを通じて行います. クラスで処理します.詳細コードは以下の通りです.
PojoクラスStudentPojoの詳細コードは以下の通りです.
処理結果は以下の通りです
次回は、Spring Batchの複合フォーマットファイルの読み書きについて、みんなで議論します.
前編のSpring Batchについて、Spring BatchのXMLファイルの読み書き操作について述べました. 本文は完全な例を通して、Spring Batchを使って固定された長いフォーマットのファイルを読み書きすることについて議論します.例は、前の例に続き、4つのフィールドを含むTXTファイル(ID、Name、Age、Score)を読み、読み出したフィールドを簡単に処理し、他のTXTファイルに出力する.
工事の構造は下の図のようです.
appication Contect.xmlとlogl 4 j.xmlの前の文はすでに述べましたが、ここでは贅を要しません.
本論文の核心配置ファイルbatch.xmlの内容は以下の通りである.
22-30行にはJobの基本情報が配置されています.このJobはStepを含み、Stepには基本的な読み(fixedlengthReader)、処理(fixed LengthProcessor)、書き込み(fixed LengthWriter)、およびcomit件数(commt-interval)が含まれています.33-49行には、読み出し処理の詳細が設定されています.固定長フォーマットとcsvフォーマットはいずれもflatファイル形式ですので、固定長フォーマットファイルを読み込むにもSpring Batchを使用して提供されるコアクラスFlatFileItemReaderが必要です.このような配置は「Spring BatchのSample(CSVファイル操作)」(四)にあります. 》で詳細に説明しましたが、オンラインTokenizerの構成に注意してください.CSVファイルを読み込む際にはDelimitedLine Tokenizer類を使います.しかし、固定された長いフォーマットのファイルを読み込むには、52-56行のようにFixedLengthTokenizerを使用します.そのcolumnsはどのように記録情報を分割しますか?つまり、どの項目の情報を指定します.(注意:列数の合計長さがファイル記録長と異なる場合、エラーが発生します.範囲に注意してください.)属性namesは各項目の名前を指定します.名前は44行のprototypeBenName属性で指定されたPojo属性名と同じです.
59-76行には、書き込み処理の詳細が設定されています.固定長フォーマットのファイルは、CSV形式のファイルを書くのと同様に、Spring Batchで提供されるコアクラスFlat FileItemWriterを使用しています.ここでは説明しなくてもいいです.ただし、ラインAggator属性はFormaterLine Agregator類を使用しています.このようなフォーマットは、各項目の長さと書式を指定できます.
batch.xmlファイルには固定長ファイルと書き込みが配置されています.読んだ後、書く前の処理は、所定のFixedlength Processorを通じて行います. クラスで処理します.詳細コードは以下の通りです.
package com.wanggc.springbatch.sample.fixedlength;
import org.springframework.batch.item.ItemProcessor;
import org.springframework.stereotype.Component;
/**
* 。
*
* @author Wanggc
*/
@Component("fixedLengthProcessor")
public class FixedLengthProcessor implements
ItemProcessor {
/**
* 。
*
* @param student
* 。
* @return 。
* @exception Exception
* 。
*/
public StudentPojo process(StudentPojo student) throws Exception {
/* ID */
student.setName(student.getID() + "--" + student.getName());
/* 2 */
student.setAge(student.getAge() + 2);
/* 10 */
student.setScore(student.getScore() + 10);
/* writer */
return student;
}
}
ここでは、固定長フォーマットファイルの読み込み、処理、書き込みについて説明しました.以下はサブファイルの情報です.PojoクラスStudentPojoの詳細コードは以下の通りです.
package com.wanggc.springbatch.sample.fixedlength;
/** Pojo _Student */
public class StudentPojo {
/** ID */
private String ID = "";
/** */
private String name = "";
/** */
private int age = 0;
/** */
private float score = 0;
/* ,getter setter */
}
JobスタートクラスLaunchの詳細コードは以下の通りです.package com.wanggc.springbatch.sample.fixedlength;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.JobExecution;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Launch {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"batch.xml");
JobLauncher launcher = (JobLauncher) context.getBean("jobLauncher");
Job job = (Job) context.getBean("fixedLengthJob");
try {
// JOB
JobExecution result = launcher.run(
job,
new JobParametersBuilder()
.addString("inputFilePath",
"C:\\testData\\fixedLengthInputFile.txt")
.addString("outputFilePath",
"C:\\testData\\fixedLengthOutputFile.txt")
.toJobParameters());
//
System.out.println(result.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
inputファイルの内容は以下の通りです.処理結果は以下の通りです
次回は、Spring Batchの複合フォーマットファイルの読み書きについて、みんなで議論します.