在学习用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文件,并且输出内容呢?
可能跟文件的相对路径有关,你把C++代码里的fopen写成绝对路径再试试看。
另外,看下Java是哪个路径启动的,在Java的启动目录下找找看。