使用Java查找外部文件

时间:2011-06-07 09:25:29

标签: java file path ini

我不确定我是否对我的c ++背景感到困惑,但是......

我正在编写(学习)将加载带有配置日期的文本文件的Java应用程序。有点像INI文件。

实际读数&处理我觉得我可以处理的文件。这是困扰我的文件位置。

我希望将这个额外的文本文件存储在与jar应用程序文件相同的目录中。但是,我不确定该应用程序文件在客户端计算机上的位置 - 就像在哪个目录中一样。而且,由于我需要完整的路径来确保加载文件,我需要一种在运行时以编程方式查找jar文件路径的方法。

环顾四周,我以为我找到了一些东西,但是在测试中,它给了我调用它的类文件的位置:

String applicationDir = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); 

if (applicationDir.endsWith(".exe"))
{
    applicationDir = new File(applicationDir).getParent();
}
else
{
    // Add the path to the class files  
    applicationDir += getClass().getName().replace('.', '/');

    // Step one level up as we are only interested in the 
    // directory containing the class files
    applicationDir = new File(applicationDir).getParent();
} 

那么,我还能做些什么来找到jar文件的实际路径? (而不是当前的工作目录,因为它可以改变,因此System.getProperty(“user.dir”)对我来说也不起作用)

1 个答案:

答案 0 :(得分:1)

你可以把你的ini(我们在java中使用资源包 - 实际上是.properties - 实际上)放在类路径中并通过ClassLoader加载它。

编辑:如果您决定使用资源包,可以直接跳过使用类加载器,请参阅this