【问题标题】:Locating an external file in Java在 Java 中查找外部文件
【发布时间】:2011-09-09 22:17:42
【问题描述】:

我不确定我是否对我的 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") 也不适合我)

【问题讨论】:

标签: java file path ini


【解决方案1】:

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

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

【讨论】:

  • 是的,我知道属性文件(虽然还没有使用它们)。但是,由于我将其作为处理外部文件的一种学习练习,因此我仍然需要找出 jar 的路径。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多