2011-09-21 132 views
-2

我將讀取2000個文件並使用java對它們進行一些處理。所以我認爲我應該使用批處理。但我該怎麼辦?我的系統是Windows 7的Java批處理

+1

更具體地說,(HTTP:// WWW。 whathaveyoutried.com) – Qix

回答

0

不能讀取文件作爲一個批次。你一次只閱讀一本。你可以使用多個線程,但我會先寫單線程。

不要緊,你使用的是什麼操作系統。

0

假設你有一個文件工作的能力,你有兩個選擇:使用一個文件列表,或者通過目錄復發。但是,如果您需要回滾更改作爲最終發生的事情的結果,則會變得棘手。您必須創建一個更改列表,然後在批處理操作結束時全部提交它們。

// first option 
batchProcess(Collection<File> filesToProcess) { 
    for(File file : filesToProcess) processSingle(file); 
} 

// second option 
batchProcess(File file) { 
    if(file.isDirectory()) { 
     for(File child : file.listFiles()) { 
      batchProcess(file); 
     } 
    } else { 
     processSingle(file); 
    } 
} 
3

您可以將Apache Camel/Servicemix ESB與ActiveMQ結合使用。

你的第一步是通過一個在ActiveMQ的消息寫在文件名之一。這可以在一個所謂的路由中完成(由框架自動分離一個線程)。在這裏你有幾個選擇使用哪個組件。有一個文件組件可以讀取文件並將它們移動到事後完成,或者您可以使用簡單的Java Bean。

在第二條路徑中,您可以閱讀Active MQ消息(如果需要更多性能,處理序列中的文件非常重要,或者需要更多性能的情況下處理多個消費者非常重要),就像處理器或Java Bean一樣處理文件內容。

您可以停止駱駝背景下你想要的任何時間(在加工過程中),並重新啓動它後獲得過程開始在尚未通過加載處理的下一個文件/從Active MQ消息隊列消費它。