2
스프링 배치가 처음입니다. 다음을 달성해야합니다. 1 단계 : 원격 위치에서 로컬 디렉토리로 파일 복사. 2 단계 : 파일의 각 줄을 처리하십시오. 3 단계 : 처리 된 라인을 데이터베이스에 저장하십시오.스프링 배치 - 원격 위치에서 파일 복사
마지막 두 단계는 확실하지만 첫 번째 단계는 어떻게 수행 할 수 있습니까?
도움 주셔서 감사합니다.
스프링 배치가 처음입니다. 다음을 달성해야합니다. 1 단계 : 원격 위치에서 로컬 디렉토리로 파일 복사. 2 단계 : 파일의 각 줄을 처리하십시오. 3 단계 : 처리 된 라인을 데이터베이스에 저장하십시오.스프링 배치 - 원격 위치에서 파일 복사
마지막 두 단계는 확실하지만 첫 번째 단계는 어떻게 수행 할 수 있습니까?
도움 주셔서 감사합니다.
이 태스크 릿은 별도의 단계에있을 것입니다이
<step id="movingFile" next="step2">
<tasklet ref="voterImportFileMovingTasklet" />
<listeners>
<listener ref="stepLevelListener" />
</listeners>
</step>
<step id="step2" >
<chunk reader="FileReader" processor="ItemProcessor" writer="ItemWriter" commit-interval="300"
skip-limit="1000">
<skippable-exception-classes>
<include class="java.lang.Exception" />
</skippable-exception-classes>
<listeners>
<listener ref="voterImportListener" />
</listeners>
</chunk>
</step>
태스크 릿 내가 그런 질문은 이미 SO에 게시 확신
public class FileMovingTasklet implements Tasklet, InitializingBean {
private Resource sourceDirectory;
private Resource targetDirectory;
private static final Log LOG = LogFactory.getLog(FileMovingTasklet.class);
public Resource getSourceDirectory() {
return sourceDirectory;
}
public void setSourceDirectory(Resource sourceDirectory) {
this.sourceDirectory = sourceDirectory;
}
public Resource getTargetDirectory() {
return targetDirectory;
}
public void setTargetDirectory(Resource targetDirectory) {
this.targetDirectory = targetDirectory;
}
@Override
public void afterPropertiesSet() throws Exception {
Assert.notNull(sourceDirectory, "Source directory must be set");
Assert.notNull(targetDirectory, "Target directory must be set");
}
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
InputStream inStream = null;
OutputStream outStream = null;
File[] files;
File dir = sourceDirectory.getFile();
Assert.state(dir.isDirectory());
files = dir.listFiles();
File bfile = null;
for (int i = 0; i < files.length; i++) {
bfile = new File(targetDirectory.getURL().getPath() + File.separator + files[i].getName());
inStream = new FileInputStream(files[i]);
outStream = new FileOutputStream(bfile);
byte[] buffer = new byte[1024];
int length;
// copy the file content in bytes
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
inStream.close();
outStream.close();
}
return RepeatStatus.FINISHED;
}
될 것입니다 달성하기 위해 태스크 릿을 작성할 수 있습니다. 주변 검색 –