4

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

4

1 回答 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 回答