我是 Spring Batch 的新手,我希望能得到一些帮助来解决这种情况:我用 MultiResourceItemReader 读取了一些文件,进行了一些编组工作,在 ItemProcessor 中我收到一个 String 并返回 a Map<String, List<String>>
,所以我的问题是ItemWriter 我应该迭代 Map 的键,并为它们中的每一个生成一个包含与该键关联的值的新文件,有人可以指出我正确的方向以创建文件吗?
我也在使用 MultiResourceItemWriter 因为我需要生成最多行的文件。
提前致谢
问问题
2911 次
1 回答
1
好吧,终于找到了解决方案,我对此并不感到兴奋,但它正在工作,我没有更多时间,所以我扩展了 MultiResourceItemWriter 并重新定义了“write”方法,处理地图的元素并编写我自己的文件。万一有人需要它,就在这里。
@Override
public void write(List items) throws Exception {
for (Object o : items) {
//do some processing here
writeFile(anotherObject);
}
private void writeFile (AnotherObject anotherObject) throws IOException {
File file = new File("name.xml");
boolean restarted = file.exists();
FileUtils.setUpOutputFile(file, restarted, true, true);
StringBuffer sb = new StringBuffer();
sb.append(xStream.toXML(anotherObject));
FileOutputStream os = new FileOutputStream(file, true);
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(os, Charset.forName("UTF-8")));
bufferedWriter.write(sb.toString());
bufferedWriter.close();
}
就是这样,我想相信有一个我不知道的更好的选择,但目前这是我的解决方案。如果有人知道如何增强我的实施,我想知道。
于 2012-06-29T20:39:23.737 回答