2016-05-13 4 views
0

私の目標は、JavaプログラムからMatlabの実行ファイルを実行することです。このメカニズムをテストするために、私は入力を取り、値をファイルに書き込むJavaプログラムを持っています。 Matlab.exeは、ファイルを読み込んで内容を表示するようにプログラムされています。 (これがうまくいったん動作したら、私はMatlabの主要な操作を進めます)。Matlab exeがJavaで作成されたファイルを読み取ることができません

しかし残念ながら、Matlabの実行ファイルを使用してファイルの内容を印刷することはできません。 ここに私のJavaコードがあります。

public class JavaMatlab_I_O 
{ 
    public void MatlabexeCall(String commandline) 
    { 
     try 
     { 
      String line; 
      Process p = Runtime.getRuntime().exec(commandline); 
      BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); 
      while ((line = input.readLine()) != null) 
      { 
       System.out.println(line); 
      } 
      input.close(); 
     } 
     catch (Exception err) 
     { 
      err.printStackTrace(); 
     } 
    } 
    public static void main(String[] args) 
    { 
     FileOutputStream fop = null; 
     File file; 
     String inp; 
     System.out.println("Enter Data: "); 
     Scanner obj = new Scanner(System.in); 
     inp = obj.next(); 
     try 
     { 
      file = new File("C:\\Users\\PritamDash\\Documents\\MATLAB\\TestFile2.txt"); 
      fop = new FileOutputStream(file); 
      // if file doesnt exists, then create it 
      if (!file.exists()) 
      { 
       file.createNewFile(); 
      } 

      // get the content in bytes 
      byte[] contentInBytes = inp.getBytes(); 
      fop.write(contentInBytes); 
      fop.flush(); 
      fop.close(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
     JavaMatlab_I_O test = new JavaMatlab_I_O(); 
     test.MatlabexeCall("C:\\Users\\PritamDash\\Documents\\MATLAB\\myfunc1.exe"); 

     System.out.println("Done"); 
    } 
} 

MATLABコード

function myfunc1() 
    disp(importdata('TestFile2.txt')); 
end 

私はMathWorks社のMATLABコマンドで!myfunc1.exeを実行すると、私はそれが正常に動作促しMCC

mcc -mv myfunc1.m 

を使用してexeファイルを生成しました。ファイル操作を削除し、myfunc1.exeを使用して文字列を単に印刷すると、Javaから呼び出されたときに正常に動作します。 Javaのプログラムがファイルをトリガすることができませんなぜ私が識別することができませんが、MATLABで読み出し動作にあなたのMATLAB関数を変更しよう

+0

。提案をありがとう! – Pritam

答えて

0

をexeファイル:この作品

disp(importdata('C:\Users\PritamDash\Documents\MATLAB\TestFile2.txt')); 
+0

しかし、別のマシンで同じ.exeを実行すると動作しません。パスは静的なので。 – Pritam

+0

テキストファイルをJavaの固定パスに作成し、そのパスを使用することができます。例えば、 C:\ yourdirectory \ xyz.txt、それは存在しなければならない。 これは実際に使用するケースによって異なります。 これを行うためにプログラムでユーザーディレクトリを取得するもう1つの可能性は、このスレッドが役に立ちます。https://de.mathworks.com/matlabcentral/newsreader/view_thread/149027 – DVarga

+0

これは面白そうです。御時間ありがとうございます。! – Pritam

関連する問題