我有这段代码:
Process p = Runtime.getRuntime().exec(command.toString(), null,
new File("D:\\Cognity"));
但问题是Cognity目录并不总是在D:\中,它可能在C:\等等。所以我的问题是,如果有给它一个相对路径的方法所以我不必须根据使用该程序的PC更改此代码吗?
答案 0 :(得分:2)
当System.getProperty("user.dir"));
返回启动JVM的目录时,您仍无法保证您是否在C:\或D:\
我的建议是将 Cognity 位置作为-D命令行参数传递,并像这样使用它:
Process p = Runtime.getRuntime().exec(command.toString(), null, new File(System.getProperty("cognity.dir")));
答案 1 :(得分:1)
当然有。
调用System.getProperty("user.dir"));
获取当前目录,并连接结果的相对路径。
e.g。
String path=System.getProperty("user.dir"));
path+=realtivePath;
修改强>
Calrification:
例如: 您要运行的程序始终位于两个文件夹后面,然后是Temp目录。
所以相对路径为..\\..\Temp\prog.exe.
假设在一台计算机上,您的程序位于C:\ Users \ user \ Documents \ Program,因此这是工作目录。
所以:
String path=System.getProperty("user.dir")); //returns the working directory
String realtivePath="\\ ..\\..\\Temp"; //no matter what is the first path, this is the relatuve location to the current dir
path+=realtivePath;
//in this example, path now equals C:\Users\user\Documents\Program\..\..\Temp\prog.exe = C:\Users\user\Temp\prog.exe
Process p = Runtime.getRuntime().exec(command.toString(), null, new File(path));
答案 2 :(得分:0)
您可以使用config-File设置绝对路径,或者在jar文件的相对路径中创建该目录。