如何使用不同的规范路径读取文件

时间:2012-08-29 12:09:58

标签: java

我正在创建一个从特定位置读取文件的java应用程序。该文件的位置位于从

重新获得的文件夹中
getCanonicalPath(). 

我面临的问题是,当我在Eclipse中运行我的应用程序时,规范路径与Java博士看到的路径不同。那么,在将我的应用程序交付给客户端之前,我应该怎么做,以确保无论使用哪个ide /命令提示符来运行应用程序,它都能看到该文件。显然,在所有可能的文件夹中复制相同的文件以涵盖getCanonicalPath的不同可能性并不是一个好主意。

谢谢

3 个答案:

答案 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)

您应该始终使用ClassLoaderTest.class.getClassLoader().getResource(name)这样的API加载文件Test.class.getClassLoader().getResourceAsStream(name)。更多信息here