0

目前,在我的 java 程序中,我正在访问项目文件夹中的一个文件。当我加载文件时,它的路径是“./src/package/package/file.txt”。当我将程序构建为可执行文件时,它不起作用。

我希望这些文件位于 .jar 之外,但在同一个文件夹中,我将如何解决这个问题?

萨米沙尔

4

3 回答 3

1

如果它们在同一个文件夹中,您可以使用相对路径,例如./file.txt. 即使使用已编译的 JAR,这也应该继续存在。

否则,如果您要使用同一台机器并且对文件的放置有信心,您可以使用绝对路径,但我不推荐它。

于 2012-05-26T20:59:16.370 回答
0

您可以Class.getResourceAsStream使用InputStream. 它也适用于 jar 包。无法File直接使用 API 访问 jar 文件中的文件。

InputStream ins = Class.getResourceAsStream("/gigadot/exp/resource.properties");

更多详细信息,请访问http://blog.gigadot.net/2010/10/loading-classpath-resources.html

于 2012-05-26T21:10:00.127 回答
0

因为相对路径是相对于执行程序时命令提示符所在的位置,而不是程序所在的位置。

您需要以某种方式告诉程序在哪里可以找到资源。大多数人使用 .sh/.bat 脚本来确定脚本本身所在的位置,然后传递 -D 标志或根据该位置设置类路径。

作为说明,I $0 为您提供在 linux 命令行上运行的脚本(它可以是相对的或绝对的),您可以从那里使用 dirname 找到它的目录,并更改 java 命令行。

在 Windows 中 %~dp0 为您提供运行的批处理脚本的目录,您可以使用它来形成您的 java 命令行。

于 2012-05-27T05:49:53.830 回答