java - 在 Java 中定位外部文件

标签 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") 对我也不起作用)

最佳答案

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

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

关于java - 在 Java 中定位外部文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6263187/

相关文章:

java - 如何从 neo4j 浏览器查看我的数据库?

java - 用java制作三角形图案

linux - 如何从 WSL 中删除 Win10 的 PATH

java - 来自 java 源的工件提取器

java - 有没有办法从文件中读取值并初始化数组?

java - 如何删除 Java 文件中单词的特定结尾?

c - 将 C 中的文件打印到标准输出的最有效方法是什么?

xml - 用径向颜色阴影填充矢量 xml 路径

java - ZipEntry 的路径名的文件分隔符?

java - 一边跳跃一边移动