3

我有这个代码:

 Process p = Runtime.getRuntime().exec(command.toString(), null, 
                                          new File("D:\\Cognity"));

但问题是 Cognity 目录并不总是在 D:\ 中,它可能在 C:\ 等中。所以我的问题是是否有办法给它一个相对路径,所以我不必根据情况更改此代码在使用该程序的 PC 上?

4

3 回答 3

2

调用System.getProperty("user.dir");以获取您当前的目录,并连接到结果的相对路径。

例如

String path = System.getProperty("user.dir");
path += relativePath;

编辑:

澄清:

例如:您要运行的程序始终位于倒数两个文件夹,然后位于 Temp 目录。

所以相对路径是..\\..\Temp\prog.exe.

假设在一台计算机上,您的程序位于C:\Users\user\Documents\Program,所以这是工作目录。

所以:

String path = System.getProperty("user.dir"); //returns the working directory
String relativePath = "\\ ..\\..\\Temp"; //no matter what is the first path, this is the relative location to the current dir
path += relativePath;
//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));
于 2013-09-03T08:55:26.263 回答
2

返回启动 JVM 的目录时,您System.getProperty("user.dir"));仍然无法保证您是在 C:\ 还是 D:\ 我的建议是将Cognity位置作为 -D 命令行参数传递并像这样使用它:

Process p = Runtime.getRuntime().exec(command.toString(), null, new File(System.getProperty("cognity.dir")));

于 2013-09-03T09:29:48.690 回答
0

您可以使用配置文件来设置绝对路径,或者在 jar 文件的相对路径中创建该目录。

于 2013-09-03T08:56:00.890 回答