我正在创建一个从特定位置读取文件的java应用程序。该文件的位置位于从
重新获得的文件夹中getCanonicalPath().
我面临的问题是,当我在Eclipse中运行我的应用程序时,规范路径与Java博士看到的路径不同。那么,在将我的应用程序交付给客户端之前,我应该怎么做,以确保无论使用哪个ide /命令提示符来运行应用程序,它都能看到该文件。显然,在所有可能的文件夹中复制相同的文件以涵盖getCanonicalPath的不同可能性并不是一个好主意。
谢谢
答案 0 :(得分:1)
其中一个解决方案是将此文件放在类路径中并从类路径加载它,其代码如
URL url = getClass().getClassLoader().getResource(path);
if(url != null) {
try {
return new File(url.toURI().getPath());
} catch (URISyntaxException e) {
return null;
}
}
如果此文件是配置文件,则这是标准的。通常在标准的Java项目布局中,您将其放在文件夹src/main/resources
。
如果这更像是一个数据文件,您应该在配置文件中放入其路径,并具有不同的配置,一个用于您的工作站,另一个用于客户端计算机上的生产。当然,在这种情况下,配置文件位于类路径中;)。
答案 1 :(得分:0)
常见的解决方案是将文件放在类路径中的目录中。如果使用getResource或getResourceAsInputStream,则可以找到该文件,无论它在类路径中的位置如何。如果使用maven,无论使用何种IDE,都可以确定如何设置类路径。
答案 2 :(得分:0)
您应该始终使用ClassLoader
,Test.class.getClassLoader().getResource(name)
这样的API加载文件Test.class.getClassLoader().getResourceAsStream(name)
。更多信息here