我必須開發一個小應用程序來比較自動生成的文件夾。它必須比較文件夾,子文件夾和文件內容。問題是這個應用程序需要從他的計算機上的用戶啓動以手動檢查更改,或者自動與ANT夜間服務一起啓動。在第一種情況下,結果在Swing GUI中顯示爲表格。但在另一種情況下,它必須創建一個文件來放置結果(格式無關緊要,XML,CSV ......)。如何使用GUI和CLI構建Java應用程序?
任何人都有一些提示,或指向教程的鏈接?
我必須開發一個小應用程序來比較自動生成的文件夾。它必須比較文件夾,子文件夾和文件內容。問題是這個應用程序需要從他的計算機上的用戶啓動以手動檢查更改,或者自動與ANT夜間服務一起啓動。在第一種情況下,結果在Swing GUI中顯示爲表格。但在另一種情況下,它必須創建一個文件來放置結果(格式無關緊要,XML,CSV ......)。如何使用GUI和CLI構建Java應用程序?
任何人都有一些提示,或指向教程的鏈接?
您可能希望添加一些在ui和文件導出之間切換的命令行選項,例如, --gui
或--export=[filename]
。你可以使用Apache Commons CLI。
另一種方法是創建一組執行任務的類,並返回一組值,然後可以將其寫入磁盤或顯示在GUI中。即一個引擎和兩個前端(GUI和CLI)。
例如:
public interface DirectoryComparer {
CompareResult performCompare(Directory dir1, Directory dir2);
public static interface CompareResult {
//...things here that you need, such as, file or dir difference, etc
Iterable<File> getFileDiff();
Iterable<Directory> getDirectoryDiff();
}
}
屆時,GUI客戶端將只使用DirectoryComparer
顯示結果,而CLI客戶端將寫這些結果到一個文件或三個。但是這兩個客戶是完全獨立的,可以單獨維護。
我寧願去'--export'的方式,因爲顯示GUI通常是圖形操作系統的默認設置。我也更喜歡args4j或JCommander(http://jcommander.org/)。但在概念上,答覆是非常好的。 – Riduidel 2011-03-15 10:02:32
是的,如果你想指定目標文件(格式可能是固定的,作爲另一個參數傳遞或者從文件名中推斷出來),那麼'--export'是需要的。我不知道JCommander,它提供了命令行解析工具嗎? – Thomas 2011-03-15 10:12:30
只需按照以下鏈接:-)作爲args4j,它使用註釋提供命令行解析,這遠遠比commons CLI命令行構造簡單。 – Riduidel 2011-03-15 12:48:46