【问题标题】:call Fortran executable file from java in Linux [duplicate]在Linux中从java调用Fortran可执行文件[重复]
【发布时间】:2014-05-26 10:03:16
【问题描述】:

我有一个 Fortran exe。我需要做什么......我需要在Linux中通过java调用那个exe。之后它应该要求输入文件和输出文件。 这是我的代码:

Process process = new ProcessBuilder("/home/admin/Documents/file.out",
                                     "input","output").start();
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;

System.out.printf("Output of running %s is:", Arrays.toString(args));

while ((line = br.readLine()) != null) {
        System.out.println(line);
}

它正在运行,但不要求输入和输出文件

【问题讨论】:

  • here
  • 向文件询问什么/谁?
  • 流程流程 = new ProcessBuilder("/home/neha/Documents/a.out","input","output").start();这一行工作正常,它会生成一些文本文件。但问题是我需要生成输入文件和输出文件
  • 这不能回答我的问题。在那一行中没有“要求”任何东西。

标签: java


【解决方案1】:

要在 java 中调用外部程序,您需要 java.lang.Runtime 包。如果您想要更方便的 API,请查看 Apache Commons Exec

【讨论】:

    【解决方案2】:

    您向我们展示的代码都没有“询问”任何内容。

    我可以看到您将两个 名称(它们是文件名吗?)传递到您的 fortran 程序。但是随后将由 fortran 程序来打开这些文件并对其进行处理。如果这没有发生,那么问题出在 fortran 代码中......

    另一方面,如果您打算在 Java 代码中打开文件,并将文件句柄传递给 fortran 程序(作为其标准输入和标准输出),那么您的代码不会尝试这样做.对于ProcessBuilder,您需要阅读javadocs。注意子进程的输入输出重定向。

    【讨论】:

    • 抱歉混淆。实际上我正在调用那个fortan exe文件。之后无论我得到什么输出,我都需要存储在输出文件中。对于输出文件,我需要设置路径和文件名
    • 我的回答解释了两种方法。 1) 将文件名传递给 fortran 程序并更改它以打开文件本身,或者 2) 用 Ja​​va 打开文件并使用打开的文件作为其标准输入和标准输出调用 fortran 程序。
    • 你好先生,在java中调用fortan exe之后。它在我的项目文件夹中生成一些文本文件。所以告诉我如何设置输出文件路径和文件名,我也想显示输出桌面文件
    • 1) 生成文本文件的内容是什么? Fortran 还是 Java?给我看相关的代码。 2) 要将文件放在桌面上,您需要使用桌面目录中的路径名创建文件。如果您使用的是 Linux,那可能是“/home/neha/Desktop”
    • private void fortanButtonActionPerformed(java.awt.event.ActionEvent evt) { // TODO 在此处添加您的处理代码:try { Process process = new ProcessBuilder("/home/neha/Documents/a.out “)。开始(); } 捕捉 (IOException e) {} }
    猜你喜欢
    • 2014-02-09
    • 1970-01-01
    • 2012-01-17
    • 1970-01-01
    • 2021-02-05
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    相关资源
    最近更新 更多