Это - возможная загрузка все файлы свойств, содержавшиеся в пакете динамично? т.е. MyClass.class.getResource (*.properties);

Я знаком с получением содержания файла свойств, данного название файла, и очевидно MyClass.class.getResource (*.properties) не будет работать, но как я могу получить список ВСЕХ файлов свойств, расположенных в том же пакете как мой класс?

5
задан Stoney 2 June 2010 в 18:16
поделиться

3 ответа

Подобные вещи можно делать с помощью Spring. Смотрите 4. Resources, в частности (или не очень? ) (или принципиально? ) (или в основном? ) в 4.7.2 Wildcards in application context constructor resource paths.

3
ответ дан 13 December 2019 в 22:02
поделиться

Вот как я это сделал,

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
    }
}
1
ответ дан 13 December 2019 в 22:02
поделиться

Предполагая, что это не JAR-пакет, вы можете использовать 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. Другой пример вы можете найти в этом ответе.

6
ответ дан 13 December 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: