Matlab exe无法读取用Java

时间:2016-05-13 02:58:01

标签: java matlab matlab-deployment

我的目标是从Java程序执行Matlab可执行文件。为了测试这种机制,我有一个Java程序,它接受输入并将值写入文件。 Matlab .exe被编程为读取文件并显示内容。 (一旦这个工作正常,我将继续主要的Matlab操作)。

但遗憾的是,我无法使用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  

我使用mcc

生成了exe
mcc -mv myfunc1.m

当我在matlab命令提示符下执行!myfunc1.exe时,它可以正常工作。当我删除文件操作并使用myfunc1.exe来简单地打印一个字符串时,它从Java调用时工作正常。 我无法确定为什么Java程序无法在Matlab .exe

中触发文件读取操作

1 个答案:

答案 0 :(得分:0)

尝试将Matlab功能修改为:

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