我有这个代码:
Process p = Runtime.getRuntime().exec(command.toString(), null,
new File("D:\\Cognity"));
但问题是 Cognity 目录并不总是在 D:\ 中,它可能在 C:\ 等中。所以我的问题是是否有办法给它一个相对路径,所以我不必根据情况更改此代码在使用该程序的 PC 上?
我有这个代码:
Process p = Runtime.getRuntime().exec(command.toString(), null,
new File("D:\\Cognity"));
但问题是 Cognity 目录并不总是在 D:\ 中,它可能在 C:\ 等中。所以我的问题是是否有办法给它一个相对路径,所以我不必根据情况更改此代码在使用该程序的 PC 上?
调用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));
返回启动 JVM 的目录时,您System.getProperty("user.dir"));
仍然无法保证您是在 C:\ 还是 D:\ 我的建议是将Cognity位置作为 -D 命令行参数传递并像这样使用它:
Process p = Runtime.getRuntime().exec(command.toString(), null, new File(System.getProperty("cognity.dir")));
您可以使用配置文件来设置绝对路径,或者在 jar 文件的相对路径中创建该目录。