有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java访问外部的属性文件。罐子

我有一本书。我正在整理的jar文件。我想创建一个非常简单的。属性文件,其中包含可配置的内容,如用户名和;其他东西,以便他们可以手工编辑,而不是我必须包括一个GUI编辑器

我想做的是能够按以下顺序搜索:

  1. 指定的属性文件(args[0]
  2. 我的应用程序。当前目录(从中调用Java的目录)中的属性
  3. 我的应用程序。用户目录中的属性(user.home系统属性?)
  4. 我的应用程序。应用程序所在目录中的属性。罐子是储存的

我知道如何访问#1和#3(我想),但如何在运行时确定#2和#4


共 (3) 个答案

  1. # 1 楼答案

    #2是"user.dir"系统属性#3是“user.home”属性

    #4无论你如何处理都有点困难。如果从JAR加载的类不在系统类路径上,那么这里有一种替代技术

    CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
    if (src != null) {
      URL url = new URL(src.getLocation(), "MyApp.properties");
      ...
    } 
    else {
      /* Fail... */
    }
    
  2. # 2 楼答案

    对于当前工作目录:

    new File(".");
    

    一个名为MyApp的文件。当前目录中的属性:

    new File(new File("."), "MyApp.properties");
    
  3. # 3 楼答案

    对于4个人,你可以试试这个。获取类路径:

    String classpath = System.getProperty("java.class.path");
    

    然后搜索应用程序jar的名称:

    int jarPos = classpath.indexOf("application.jar");
    

    解析出通向它的路径:

    int jarPathPos = classpath.lastIndexOf(File.pathSeparatorChar, jarPos) + 1;
    String path = classpath.substring(jarPathPos, jarPos);
    

    然后追加MyApp.properties。确保检查jarPos == -1,这意味着如果类路径(可能是在您的开发环境中运行时)不存在jar