代码之家  ›  专栏  ›  技术社区  ›  BreakerOfStones

是否可以动态加载包中包含的所有属性文件?i、 e.MyClass.class.getResource('*.properties');

  •  5
  • BreakerOfStones  · 技术社区  · 16 年前

    3 回复  |  直到 16 年前
        1
  •  3
  •   Istao    16 年前

    你可以用它来做这类事情 春天 . 看到了吗 4. Resources ,尤其是(或明显?)(或者原则上?)(或者主要是?)在 4.7.2 Wildcards in application context constructor resource paths .

        2
  •  6
  •   Community Mohan Dere    9 年前

    File#listFiles() 为了这个。下面是一个启动示例:

    String path = MyClass.class.getResource("").getPath();
    File[] propertiesFiles = new File(path).listFiles(new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.endsWith(".properties");
        }
    });
    

    如果它是JAR打包的,那么首先需要更多的代码 JarFile API this answer .

        3
  •  1
  •   TWiStErRob    10 年前

    Class<? extends Object> clazz = AnyKnownClassInTheJar.class;
    String classFileName = clazz.getSimpleName() + ".class";
    URL classResource = clazz.getResource(classFileName);
    if (!"jar".equals(classResource.getProtocol())) {
        // Class not from JAR
        return;
    }
    JarURLConnection classConnection = (JarURLConnection)classResource.openConnection();
    JarFile jar = classConnection.getJarFile();
    for (Enumeration<JarEntry> i = jar.entries(); i.hasMoreElements();) {
        JarEntry entry = i.nextElement();
        if (entry.getName().endsWith(".properties")) {
            // Load the property file
        }
    }