Javaの構文解析をnginxの設定ファイル

最近のプロジェクトはnginxの-javaの-Parserツールを見つけるために、nginxの設定ファイル、いくつかの参照を解決する必要があり、GitHubの上のプロジェクトアドレス:https://github.com/odiszapc/nginx-java-parser

パースプロセスNginx.conf、参照機能を完了するためにどのメソッド呼び出しがわからない、プロジェクトをREADME.mdも、あなたがソースコードを見つけることができますを表示することができます。ここに私の決意のデモです。

2  
3  インポートcom.github.odiszapc.nginxparser.NgxBlock。
4  インポートcom.github.odiszapc.nginxparser.NgxConfig。
5  輸入com.github.odiszapc.nginxparser.NgxEntry。
6  インポートcom.github.odiszapc.nginxparser.NgxParam。
7  
8  インポートjava.io.Fileの。
9  インポート java.utilの。* ;
10  インポートjava.util.regex.Matcher。
11  インポートjava.util.regex.Patternの。
12  
13  パブリック クラスTestParase {
 14  
15  
16      公共の 静的 無効メイン(文字列の引数[]){
 。17          トライ{
 18がある             // 指定したフォルダにプロファイル1.読む**:\作業\ドキュメント\ nginxconf \テスト
。19              のArrayList <ファイル> filesArray = TestParase.getFiless( " *:作業\\ \\ \\ nginxconf文書テスト\\ \\ " );
 20              // confに設定ファイルフォルダ2.解析ループ
21である             ためにint型 I = 0;私はfilesArray.sizeを(<); I ++ ){
 22は、                  文字列filePathに= filesArray.get(I).getPath();
 23である                TestParase.paraseNginx(filePathに);
 24              }
 25  
26れる          } キャッチ(例外E){
 27             e.printStackTrace();
28          }
 29  
30  
31      }
 32  
33      公共 静的 ボイド paraseNginx(文字列filePathに)がスロー例外{
 34  
35          NgxConfigのCONF = NgxConfig.read(除いたファイルパスを指定して)。
36の         // 解析ngxin配置文件中的paramsは
37の          NgxParamワーカー= conf.findParam( "worker_processes" )。
38          workers.getValue()。
39          のSystem.out.println( "労働者:" + workers.getValue());
40  
41          // 获取HTTP下面上流ブロック的
42         リスト<NgxEntry> rtmpServers = conf.findAll(NgxConfig.BLOCK、 "HTTP"、 "上流" )。
43          セットの<string> noRepeatRtmpServers = 新しい HashSetの<文字列> ();
44          のための(NgxEntryエントリ:rtmpServers){
 45              // 获取上流下的所有的サーバ
46              のリスト<NgxEntry> entryParamList =((NgxBlock)エントリ).findAll(NgxConfig.PARAM、 "サーバ" )。
47              のために(NgxEntry entryParam:entryParamList){
 48                 文字列str = entryParam.toString()。
49                  。文字列[] enrryParamStrArr = entryParam.toString()スプリット(」 " )。
                 noRepeatRtmpServers.add(enrryParamStrArr [1 ])。
51              }
 52          }
 53          のために(文字列noRepeatRtmpServer:noRepeatRtmpServers){
 54              のSystem.out.println(noRepeatRtmpServer)。
55          }
 56  
57          // 获取HTTP下的サーバ
58          のリスト<NgxEntry> locationServers = conf.findAll(NgxConfig.BLOCK、 "HTTP"、 "サーバ"、 "場所" )。
59          セットの<文字列> noRepeatLocationServers = 新しい HashSetの<文字列> ();
60          のための(NgxEntryエントリ:locationServers){
 61             NgxParam locationParam =((NgxBlock)エントリ).findParam( "proxy_pass" )。
62              であれば(locationParam == NULL ){
 63                  続けます64              }
 65              。文字列[] enrryParamStrArr = locationParam.toString()スプリット(」 " )。
66              列enrryParamStr = enrryParamStrArr [1 ]。
67              文字列[] enrryParamStrArry = enrryParamStr.split( "/" )。
68              noRepeatRtmpServers.add(enrryParamStrArry [2 ])。
69          }
 70          // 循环遍历noRepeatRtmpServers 
71          (文字列noRepeatRtmpServer:noRepeatRtmpServers){
 72              のSystem.out.println(noRepeatRtmpServer)。
73          }
 74      }
 75      公共の 静的のArrayList <ファイル> getFiless(文字列のパス)がスロー例外{
 76          のArrayList <ファイル>のfileList = 新規のArrayList <ファイル>(); // 目标集合のfileList 
77          ファイルファイル= 新しいファイル(パス);
78          であれば(file.isDirectory()){
 79              ファイル[] =ファイルのfile.listFiles()。
80              のための{:(ファイルのファイルfileIndex)
 81                  の場合(fileIndex.isDirectory()){
 82                      TestParase.getFiless(fileIndex.getPath()); // このファイルは再帰検索次に、ディレクトリであれば
83                  } {
 84                      fileList.add(FileIndex); // ファイルは、通常であればファイル、コレクションにファイルハンドル
85                  }
 86              }
 87          }
 88          返し、Filelistを;
 89      }
 90  
91れます }

 

おすすめ

転載: www.cnblogs.com/zhangdanyang95/p/11322159.html