java - 使用 Spring Batch 写入多个文件

标签 java spring spring-batch

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

最佳答案

好吧,终于找到了一个解决方案,我对此并不十分兴奋,但它正在工作而且我没有更多时间,所以我扩展了 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();
    }

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

关于java - 使用 Spring Batch 写入多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11213294/

相关文章:

java - 在不使用 Scanner 的情况下从控制台获取用户输入

java - Android Studio中的Appcompat Activity 以及androidx gradle版本问题

spring - 如何在 spring-batch 中创建有关过滤项目的报告?

java - Spring Batch 集成——远程分块从属异常

java - 在Java中从HashMap中检索对象?

java - 从子项目访问gradle中的父项目文件

javascript - 如何使用 Vue.js 将用户登录到 spring-security 应用程序?

Spring Batch - 当 ItemReader 没有返回数据时如何使作业失败

spring - 找不到 XML 模式命名空间的 Spring NamespaceHandler [http ://www. springframework.org/schema/batch]

java - Spring Batch 可以多次使用 Driving Query 的结果吗?