2011-03-15 59 views
0

我必须开发一个小应用程序来比较自动生成的文件夹。它必须比较文件夹,子文件夹和文件内容。问题是这个应用程序需要从他的计算机上的用户启动以手动检查更改,或者自动与ANT夜间服务一起启动。在第一种情况下,结果在Swing GUI中显示为表格。但在另一种情况下,它必须创建一个文件来放置结果(格式无关紧要,XML,CSV ......)。如何使用GUI和CLI构建Java应用程序?

任何人都有一些提示,或指向教程的链接?

回答

2

您可能希望添加一些在ui和文件导出之间切换的命令行选项,例如, --gui--export=[filename]。你可以使用Apache Commons CLI

+1

我宁愿去'--export'的方式,因为显示GUI通常是图形操作系统的默认设置。我也更喜欢args4j或JCommander(http://jcommander.org/)。但在概念上,答复是非常好的。 – Riduidel 2011-03-15 10:02:32

+0

是的,如果你想指定目标文件(格式可能是固定的,作为另一个参数传递或者从文件名中推断出来),那么'--export'是需要的。我不知道JCommander,它提供了命令行解析工具吗? – Thomas 2011-03-15 10:12:30

+0

只需按照以下链接:-)作为args4j,它使用注释提供命令行解析,这远远比commons CLI命令行构造简单。 – Riduidel 2011-03-15 12:48:46

0

另一种方法是创建一组执行任务的类,并返回一组值,然后可以将其写入磁盘或显示在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客户端将写这些结果到一个文件或三个。但是这两个客户是完全独立的,可以单独维护。