簡體   English   中英

獲取Java源文件的包

[英]Get the package of a Java source file

我的目標是找到Java源文件的軟件包(作為字符串),以純文本形式提供,並且尚未在文件夾中排序。

我不能只在文件中找到關鍵字package的第一個實例,因為它可能出現在注釋中。 所以我在考慮兩種選擇:

  • 逐字掃描文件,並為掃描儀保留一個“ inside-a-comment”標志。 第一次在沒有注釋的情況下遇到package關鍵字時,請停止掃描並報告結果。
  • 使用正則表達式-從理論上講應該是可行的,因為Java不會再使用塊注釋了,但是我嘗試制作這樣的正則表達式,事實證明它相當復雜-至少對我而言。

兩種方法之間的另一個區別是,當手動掃描時,可以確定不再出現package關鍵字時可以停止掃描,從而節省了一些時間...而且我不確定我可以對正則表達式執行類似的操作。 另一方面,“何時不再顯示”的決定不一定很簡單 ,盡管我可以對此進行一些啟發。

我想聽聽有關此問題的任何意見,並歡迎使用正則表達式提供任何幫助。 我的解決方案也是用Java編寫的。

編輯:對於那些建議實際解析文件的人-絕對是一個可行的選擇,謝謝,但是對於我來說,僅解析包的整個文件對於我來說有點過頭了。 如果沒有更簡單的選擇,我會做的。

我通過使用Java解析器解決了這個問題。 對我來說, javaparser是最合適的。

CompilationUnit cu = JavaParser.parse( file );
String packageName = cu.getPackage().getName().toString();

您可以使用實際的Java源解析器,例如javaparser 它提供了正確解析的Java文件,而無需重新發明Java解析器或使用窮人解析器(正則表達式)。

我看到的唯一缺點是,也許您希望在找到包后立即停止解析,並避免解析文件的其余部分。 您可以通過多種方式(有些怪異)來實現此目的,但是我建議您在考慮這一點之前先評估整個文件的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM