文章目錄
- 1. commons-io
- 2. commons-cli
- 3. commons-lang
- 4. commons-configuration
最近自己寫程式,發現 Apache Commons(http://commons.apache.org/) 庫真的很好用,能夠簡化 Java 中很多繁瑣的任務,幫我們造了很多輪子。
1. commons-io
跟 IO 有關的工具方法。
例1:關閉流
BufferedWriter out = null;<br />try {<br /> out = new BufferedWriter(...);<br /> out.write(...);<br /> ...<br />}<br />catch (IOException e) {<br /> e.printStackTrace();<br />}<br />finally {<br /> if (out != null) {<br /> try {out.close();} catch (IOException e) {}<br /> }<br />}
上面 finally 中的是關閉流的常規寫法,用 IOUtils 只需寫成:
IOUtils.closeQuietly(out);
例2:讀檔案
List<String> = FileUtils.readLines(File); // 將檔案的內容按行讀到 List 裡面<br />byte[] = FileUtils.readFileToByteArray(File); // 也可以讀到 byte 數組裡面
也可以直接從 InputStream 讀取。
例3:遍曆目錄
commons-io 提供了 DirectoryWalker 用於遞迴遍曆目錄,你的程式只需繼承 DirectoryWalker ,然後實現一些方法即可。“目錄行走者”,這個名字也很 cool
2. commons-cli
commons-cli 可以協助你解析命令列參數。
你需要寫的只是像這樣的代碼:
// Options 用來裝所有的參數<br />Options options = new Options();</p><p>// 添加參數,指定參數屬性<br />options.addOption("t", false, "display current time");</p><p>// 解析參數<br />CommandLineParser parser = new PosixParser();<br />CommandLine cmd = parser.parse(options, args);</p><p>// 讀取解析結果<br />if(cmd.hasOption("t")) {<br />...<br />}<br />else {<br />...<br />}
而且還有 HelpFormatter 幫你自動產生一份命令列選項的協助,相當貼心。
3. commons-lang
提供很多基礎的工具方法,增強了 java.lang 包中的類。用的比較多的是關於字串處理的,即 StringUtils 和 StringEscapeUtils
我用到的是 StringEscapeUtils.escapeHtml(String):將字串中的 HTML 特殊字元(<>"等)用 HTML 實體替換。
還有 StrTokenizer :可以進行比 StringTokenizer 更複雜的文法解析。
4. commons-configuration
沒用過,但看起來也很不錯。提供統一的介面,從各種地方讀取配置,比如:properties 檔案、Windows INI 檔案、XML 文檔、Applet/Servlet 參數等。
PS. 另外,commons-pool 提供了一個通用的對象池實現,我準備在另一篇文章中專門介紹。