使用Spring Batch编写多个文件

时间:2012-06-26 18:02:54

标签: java spring spring-batch

我是Spring Batch的新手,我很感激一些帮助来解决这种情况:我用MultiResourceItemReader读取一些文件,进行一些编组工作,在ItemProcessor中我收到一个String并返回{{1} },所以我的问题是在ItemWriter中我应该迭代Map的键,并且对于它们中的每一个都生成一个包含与该键相关联的值的新文件,有人可以指出我在正确的方向上以创建文件? 我也在使用MultiResourceItemWriter,因为我需要生成最多行的文件。
提前致谢

1 个答案:

答案 0 :(得分:1)

嗯,最终得到了一个解决方案,我对此并不感到兴奋,但它正在工作,我没有太多时间,所以我扩展了MultiResourceItemWriter并重新定义了“write”方法,处理了map的元素并自己写文件。 如果有人在那里需要它,这里就是。

    @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();
    }

就是这样,我想相信有一个更好的选择,我不知道,但目前这是我的解决方案。如果有人知道如何增强我的实现,我想知道它。