最近のプロジェクトは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れます }