Java调用外部程序无法创建文件

在学习用Java的Runtime类调用外部程序时遇到了一个问题,Java代码:

public class Main {
    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec("F:/a.exe 123 456");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

a.exe是用C语言写的一个把参数输出到文件的一个程序,编译后放在F盘根目录下,代码:

#include<cstdio>
int main(int argc, char* argv[])
{
    FILE* fp = fopen("output.txt", "w");
    for (int i=0; i<argc; ++i)
    {
        fprintf(fp, "%s\n", argv[i]);
    }
    fclose(fp);
    return 0;
}

现在遇到了一个问题,运行Java代码后,在F盘下没有output.txt,但是程序确实运行过了,也可以获取到返回值。在cmd中输入F:/a.exe 123就有output.txt,输出的内容也是正确的。

怎样能让a.exe能创建output.txt文件,并且输出内容呢?

阅读 2.8k
1 个回答

可能跟文件的相对路径有关,你把C++代码里的fopen写成绝对路径再试试看。

另外,看下Java是哪个路径启动的,在Java的启动目录下找找看。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题