我试图验证输入文件是否为空或有数据。我正在使用Spring批处理通过XML bean配置,我的实际配置如下:
<!-- READERS -->
<bean id="mgbfItemReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="strict" value="false" />
<!-- Read a file -->
<property name="resource" value="file:///fichtemcomp/datent/#{processDataClass.fileName}" />
<property name="linesToSkip" value="10" />
<property name="encoding" value="UTF-8" />
<!-- Mapper -->
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<!-- split it -->
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
<property name="delimiter" value="|" />
<!-- Valores del layout -->
<property name="names" value="name,secondName,lastName" />
</bean>
</property>
<!-- Wrapper -->
<property name="fieldSetMapper">
<bean class="com.bbva.mgbf.batch.listeners.ScholarItemReader">
</bean>
</property>
</bean>
</property>
</bean>
<!-- END READERS -->
在我的课堂上,我有这样的东西:
@Override
public Map<String, Object> mapFieldSet(FieldSet fieldSet) throws BindException {
LOGGER.info("Reading all items \t {}", fieldSet);
LOGGER.info("FieldCount \t {}", fieldSet.getFieldCount());
Map<String, Object> dataIn = new HashMap<>(65);
if (fieldSet.getFieldCount() > 0 && !fieldSet.readString(0).trim().isEmpty()) {
LOGGER.info("in if ");
for (int i = 0; i < 65; i++) {
String key = "" + i;
String value = fieldSet.readString(i);
dataIn.put(key, value);
}
}else{
dataIn.put("empty", "emptyFile");
}
return dataIn;
}
但它从未进入“else”声明,它只是结束了这个过程。
有人知道是否有其他方法来验证文件是否为空吗?
当读卡器已经读取了一行时,就会调用fieldSetMapper
,因此在这个过程中,尝试检查映射器中的文件是否为空已经太迟了。
我试图验证输入文件是空的还是有数据
我将使用预验证tasklet步骤来检查文件是否为空。
我知道匹配模式解析器,这是Spring批处理提供的。我需要关于如何构造批处理作业的帮助,以便它可以读取循环中的记录类型5和记录类型6。
我使用的是Spring批处理4.3.2。.我正在写测试,发现了一些奇怪的东西,签出下面的代码。 对于相同的jobexecutions,我会得到不同的“getStepExecutions()”结果,这取决于我获取它们的方式。你知道为什么会这样吗?还是我做错了什么? 干杯T
我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。
问题内容: 我正在使用Spring批处理下载一个大文件来处理它。场景很简单: 无需保存输入文件数据。 我们可能同时运行多个(相同场景的)作业实例 我正在寻找最佳实践来处理这种情况。 我是否应该创建Tasklet以便在本地下载文件,而不是通过常规步骤开始处理它? 在这种情况下,我需要考虑一些临时文件问题(确保删除了该文件,确保不覆盖其他临时文件,等等。) 另一方面,我可以下载它并将其保留在内存中,但
很抱歉淹没了spring批处理SO队列。 我离开了作业范围模式,因为这在3.0.6的XML配置中似乎不起作用。但我很可能会被搞糊涂。 我试着转到步进范围,因为这似乎是有效的。这是bean的app-context.xml配置头。这将启用选项。 是否需要在作业中初始化一些上下文?还是spring-batch与rest easy客户端正在利用的代理冲突?
我有一个spring批处理应用程序,它从文件中读取数据,进行一些处理,最后编写一个定制的输出。这一切都是一步到位的。在下一步中,我将使用一个tasklet来归档输入文件(移动到另一个文件夹)。这个应用程序运行良好。但是,现在我需要在远程服务器上对sftp输出文件进行进一步处理。我找到了一种使用spring integration实现sftp的方法,在这里我创建了一个输入通道,该通道将反馈给outb