現在作業中のプロジェクトでSpringバッチを使用していますが、ファイルを新しいファイルに正常に移動できますが、名前を変更するのに苦労していますファイルも同様です。ここに私の設定です:ファイル名を現在の日付と時刻に変更するバッチバッチ
<j:step id="moveProcessedFile">
<j:tasklet ref="processedFileMove" allow-start-if-complete="true" />
</j:step>
<bean id="processedFileMove" class="com.ussco.wms.batch.wmcstint.MoveFileTasklet">
<property name="targetObject">
<bean class="JdkFileHandler" />
</property>
<property name="targetMethod" value="moveFile" />
<property name="arguments">
<list>
<value>${ipfile}</value>
<value>${ipfile.folder}</value>
</list>
</property>
</bean>
ここMoveFileTaskletです。これはかなりMethodInvokingTaskletAdapterと同じです:
JdkFileHandlerは方法moveFile
あり
public class MoveFileTasklet extends AbstractMethodInvokingDelegator<Object> implements Tasklet{
private static Logger log = LoggerFactory.getLogger(MoveFileTasklet.class);
//Create method for date and time rename within Tasklet. Implement execute as well
public boolean renameFile(File fileName){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
log.info("test");
return false;
}
/**
* Following methods directly copied from MethodInvokingTaskletAdapter
*/
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
contribution.setExitStatus(mapResult(invokeDelegateMethod()));
return RepeatStatus.FINISHED;
}
protected ExitStatus mapResult(Object result) {
if (result instanceof ExitStatus) {
return (ExitStatus) result;
}
return ExitStatus.COMPLETED;
}
}
:
public boolean moveFile(File fileToMove, String targetDirectory) throws IOException {
return renameFile(fileToMove, new File(targetDirectory + FILE_SEPARATOR + fileToMove.getName()));
}
とでrenameFile:
今私は私のファイルを移動することができる午前private boolean renameFile(File fileToRename, File renamedTargetFile) throws IOException {
if (!fileToRename.exists()) {
throw new FileNotFoundException(fileToRename + " does not exist.");
} else if (!fileToRename.isFile()) {
throw new IOException(fileToRename + " is not a file and cannot be remaned.");
} else if (renamedTargetFile.exists()) {
throw new IOException(renamedTargetFile + " already exists so the file " + fileToRename
+ " cannot be renamed to it.");
}
return fileToRename.renameTo(renamedTargetFile);
}
を正しい場所を指定する必要がありますが、ファイルの名前をfileNamemmddyyhhmmss
に変更する必要があります。また、JdkFileHandler内のメソッドを変更することはできません。私が指定したMoveFileTasklet
の中に私自身の方法を実装するか、別の方法で実装したいと思います。
私はこの情報がどこにあるのか知っています。私はそれを行う方法に関するコードを探しているわけではなく、どのように進めるべきかだけです。今のところ固まっている種類。何かアドバイス?
ですから、現在の時刻をファイル名に追加する方法がありますか?それは働いていないのですか? – Julian
はい、それは私が現在やろうとしていることです。どのように進めるか分かりません。これは、(MoveFileTasklet内の)renameFileメソッドを適切に配置する必要がありますか? –
時刻を付加して現在の時刻の文字列を返すメソッドを変更することができます。あなたは常に 'renameFile()'にfalseを返しています。 – Julian