0

我有一个普通的 Java 类(既不是 JSP 也不是 Servlet),它对文件执行一些处理,例如读取、写入和执行一些可执行文件。如何知道每个文件的相对路径?

我知道getClass().getResourceStream(),但这仅对读取文件有用。我知道,getServletContext().getRealPath()但我的代码在普通的 Java 类中,而不是 servlet。

我想做以下

String relativePath = "path/to/exe";
Runtime.getRuntime.exec(relativePath);
4

2 回答 2

1

我知道,getServletContext().getRealPath()但我的代码在普通的 Java 类中,而不是 servlet

只需将其结果传递给 Java 类。

String desiredPath = calculateItSomehowBasedOn(getServletContext().getRealPath("/"));
yourJavaClass.executeExe(desiredPath);

请注意,当部署的 WAR 不是在本地磁盘文件系统中展开,而是在内存中展开时,getRealPath()将会返回。null一些生产服务器配置可以做到这一点。

更好的是将exe文件的位置设置为配置文件。例如

path.to.exe = /absolute/path/to/exe

该配置文件可以依次放置在类路径中,或者可以将其路径添加到类路径中。另请参阅在哪里放置以及如何在基于 servlet 的应用程序中读取配置资源文件?

于 2012-07-01T00:56:22.297 回答
0

您的问题似乎针对 Java SE 而不是 Java EE。我假设您的“exe”文件相对于您的 java 项目?要获取绝对路径,您可以使用:

File f = new File("path/to/exe");
String exePath = f.getAbsolutePath();

然后你可以使用绝对路径来发出你的命令。另请参阅:File 的 JavaDoc

于 2012-07-01T00:01:05.127 回答