使用C#利用cmd來調用java jar包獲取其中的數據


其實也很簡單,就是在C#中構建一個Process,啟動jar包,並且給jar包傳遞參數

 

因為我並沒有怎么學過JAVA,所以只寫了個很小的Demo,就是根據傳入的參數獲取對應的數據

 

以下是JAVA Demo

package com.movie;

import static java.lang.System.*;

/**
 * Created by rZH on 2018/11/21
 */
public class MovieInfo {
    public static void main(String[] args){
        //如果當前無請求參數
        if ( args.length<=0){
            //則程序終止
            return;
        }

        //構建數據對象
        DataClass dc=new DataClass();
        //獲取傳進來的第一個參數
        String arg=args[0];
        //使用數據對象根據參數來得到對應的數據
        String str= dc.GetMovieListJson(arg);
        //打印數據
        out.println(str);
    }
}

  

package com.movie;

/**
 * Created by rZH on 2018/11/21
 */
public class Movie {
    public Movie(String name,String beginTime,String room,String date,String version,String language){
        this.Name=name;
        this.BeginTime=beginTime;
        this.Data=date;
        this.Room=room;
        this.Version=version;
        this.Language=language;
    }
    public String Name;
    public String BeginTime;
    public String Room;
    public String Data;
    public String Version;
    public String Language;
}
package com.movie;

import com.alibaba.fastjson.JSON;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by rZH on 2018/11/21
 */
public class DataClass {
    public String GetMovieListJson(String date){
        List<Movie> list=new ArrayList<Movie>();
        list.add(new Movie("M1","13:00","1號廳","20181120","2D","國語"));
        list.add(new Movie("M1","13:20","2號廳","20181120","2D","國語"));
        list.add(new Movie("M2","13:40","3號廳","20181120","3D","國語"));
        list.add(new Movie("M1","14:00","4號廳","20181120","2D","英語"));
        list.add(new Movie("M1","15:00","5號廳","20181120","2D","國語"));
        list.add(new Movie("M3","14:30","2號廳","20181120","2D","國語"));
        list.add(new Movie("M1","15:20","3號廳","20181130","3D","國語"));
        list.add(new Movie("M1","14:40","4號廳","20181120","2D","國語"));
        list.add(new Movie("M1","16:00","5號廳","20181122","2D","原話"));
        list.add(new Movie("M2","16:20","1號廳","20181120","3D","國語"));
        list.add(new Movie("M1","16:35","2號廳","20181122","2D","國語"));
        list.add(new Movie("M1","17:00","4號廳","20181120","2D","國語"));
        list.add(new Movie("M2","17:20","3號廳","20181120","3D","國語"));
        list.add(new Movie("M1","17:45","5號廳","20181120","2D","粵語"));
        list.add(new Movie("M4","18:00","2號廳","20181120","2D","國語"));

        List<Movie> ml=new ArrayList<Movie>();
        for(int i=0;i<list.size();i++){
            if (list.get(i).Data.equals(date)){
                ml.add(list.get(i));
            }
        }


       String str = JSON.toJSONString(ml);
        return str;
    }
}

額,原諒我真不會寫JAVA,就這些代碼我還是在網上東查西查才查出來的,也原諒我用C#的風格去寫吧

 

接着就是C#里面的,這個方法是在網上找的,某個博主寫的,網頁關了我找不着本人了

我的一些配置是寫在app.config文件里的

以下是該文件的內容

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
    </startup>
    <appSettings>
        <!--cmd需要啟動的程序路徑-->
        <add key="startPath" value="cmd.exe"/>
        <!--cmd程序啟動的程序命令-->
        <add key="args" value="java -jar F:\JavaMovieDemo\out\artifacts\JavaMovieDemo_jar\JavaMovieDemo.jar"/>
    </appSettings>
</configuration>

  

 static void Main (string[] args)
        {
            //運行程序
           string result= RunCmdAndGet (ConfigurationManager.AppSettings["args"]+ " 20181120");
            Console.WriteLine ("從java包得到的數據是:\r\n");
            Console.WriteLine (result);
            Console.ReadKey ();
        }

        /// <summary>
        /// 啟動CMD並且獲取到數據
        /// </summary>
        /// <param name="query"></param>
        public static string RunCmdAndGet (string query)
        {
            Process CmdProcess = new Process ();
            CmdProcess.StartInfo.FileName = ConfigurationManager.AppSettings["startPath"];

            CmdProcess.StartInfo.CreateNoWindow = true;         // 不創建新窗口    
            CmdProcess.StartInfo.UseShellExecute = false;       //不啟用shell啟動進程  
            CmdProcess.StartInfo.RedirectStandardInput = true;  // 重定向輸入    
            CmdProcess.StartInfo.RedirectStandardOutput = true; // 重定向標准輸出    
            CmdProcess.StartInfo.RedirectStandardError = true;  // 重定向錯誤輸出  

            CmdProcess.StartInfo.Arguments = "/c " + query;//“/C”表示執行完命令后馬上退出  
            CmdProcess.Start ();//執行  

           string result= CmdProcess.StandardOutput.ReadToEnd ();//獲取返回值  
            
            CmdProcess.WaitForExit ();//等待程序執行完退出進程  

            CmdProcess.Close ();//結束 
            return result; 
        }

  

以下圖片就是結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM