我有一个普通的Java类(既不是JSP也不是Servlet),它对读取,写入和执行某些可执行文件等文件执行某些处理。如何知道每个文件的相对路径?
我知道getClass().getResourceStream()
,但这仅适用于阅读文件。我知道getServletContext().getRealPath()
,但我的代码是普通的Java类而不是servlet。
我想做以下
String relativePath = "path/to/exe";
Runtime.getRuntime.exec(relativePath);
答案 0 :(得分:1)
我知道
getServletContext().getRealPath()
但我的代码是普通的Java类而不是servlet
将结果传递给Java类。
String desiredPath = calculateItSomehowBasedOn(getServletContext().getRealPath("/"));
yourJavaClass.executeExe(desiredPath);
请注意,当部署的WAR未在本地磁盘文件系统中展开时,getRealPath()
将返回null
,而是在内存中。一些生产服务器配置会这样做。
更好的方法是将exe文件的位置设置为配置文件。 E.g。
path.to.exe = /absolute/path/to/exe
此配置文件又可以放在类路径中,或者可以将其路径添加到类路径中。另请参阅Where to place and how to read configuration resource files in servlet based application?
答案 1 :(得分:0)
您的问题似乎是针对Java SE而非Java EE。我假设你的“exe”文件是相对于你的java项目的?要获得绝对路径,您可以使用:
File f = new File("path/to/exe");
String exePath = f.getAbsolutePath();
然后您可以使用绝对路径发出命令。另见:JavaDoc of File。