本文分享我最近幾天開發一個命令行界面 (CLI) 項目的經驗。
今年我打算深入學習 Java。在完成一些 Advent of Code 的挑戰並進行一些常規練習後,我決定開始創建一個小型項目,以更深入地了解這門語言,並更貼近 Java 應用程序的整體開發過程。
讓我們開始吧!
我正在構建一個簡單的 CLI 應用程序,它模擬了三個 Unix 系統命令:ls
、mv
和 ifconfig
。選擇這三個命令的原因如下:
ifconfig
的底層實現。 我的第一步是嘗試使用一個工具來管理我的所有代碼。快速搜索後,我發現 Maven 是 Java 生態系統中用於此任務的選項之一。因此,我快速按照文檔中的基本入門指南操作,並獲得了項目的骨架。
然後,我花了一些時間嘗試弄清楚如何在 Java 中使用 JUnit 進行測試。然而,過了一會兒,我發現測試 CLI 比較困難,部分原因是我缺乏對整個生態系統,特別是 CLI 領域的經驗。
為了克服這個問題,我的決定很簡單:先專注於構建命令,然後隨著我對 Java 及其生態系統的了解不斷加深,再返回並將其添加到項目中。
ls
命令我創建的第一個命令是 ls
。說實話,我做的第一件事是詢問 ChatGPT 如何在 Java 中實現它。我原本以為,根據我在 JavaScript 中的經驗,我會使用 IO(在 JavaScript 中為 fs)中的類和方法。我從未想過 File
類有一個內置方法可以列出目錄中的文件,並且為了實現這個功能,我們需要使用 .
選項創建一個新的 File
實例:
<code class="language-java">File directory = new File("."); File[] files = directory.listFiles();</code>
我還添加了一段簡單的文本,用於指示文件是文件夾、隱藏文件還是普通文件。
mv
命令創建此命令的過程與 ls
命令大致相同。主要區別在於,我首先創建了一個簡單的函數來移動特定文件,然後添加了傳遞兩個參數(原始路徑和目標路徑)的功能。
ifconfig
命令創建此命令時,我遵循了與前兩個命令相同的流程。我向 ChatGPT 請求生成該命令的基本代碼,然後在我對 ChatGPT 提供的結果添加更多步驟,或者查閱 Java 文檔以了解命令中使用的類。例如,在這裡我了解了 java.net
包的更多信息,以及如何使用該包和 Enumeration
。
對如何使用該包和 Enumeration
的總體概述。
我認為在接下來的項目中,我將專注於其他方面,以更好地理解 Java,例如,下一個項目是使用 JDBC 連接到數據庫的簡單示例。
以下是 junix 項目的代碼(此處省略代碼)。
以上是Java項目,創建CLI的詳細內容。更多資訊請關注PHP中文網其他相關文章!