2012-06-26 84 views
4

我是Spring批處理中的新手,我希望能幫助解決這種情況:我使用MultiResourceItemReader讀取一些文件,進行一些編組工作,在ItemProcessor中收到一個String並返回一個Map<String, List<String>>,所以我的問題是,在ItemWriter中,我應該迭代Map的鍵,併爲它們中的每一個生成一個包含與該鍵關聯的值的新文件,有人能指出我在正確的方向以便創建文件?
我也在使用MultiResourceItemWriter,因爲我需要用最多的行生成文件。
在此先感謝用Spring批處理寫入多個文件

回答

1

那麼,finaly有一個解決方案,我沒有真正興奮,但它的工作,我沒有更多的時間,所以我擴展了MultiResourceItemWriter,並重新定義了「寫」方法,處理地圖的元素並自己編寫文件。 如果有人需要它,就在這裏。

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

而就是這樣,我想相信有一個更好的選擇,我不知道,但目前這是我的解決方案。如果有人知道如何加強我的實施,我想知道它。

相關問題