Я пробовал много, но не смог найти решение.Как получить все файлы свойств в пакете и обновить значения ключей с помощью java?
|
|--src/main/resouces
|
|-updatePropertiesFile.java
|-xyz_en_US.properties
|-xyz_en_AF.properties
|-xyz_en_AE.properties
Это моя проектная структура.
У меня есть класс updatePropertiesFile, чтобы обновить ключ для всего файла свойств. У меня около 200 файлов свойств.
Так что мне нужно то, что мне нужно написать метод для обновления определенного ключа во всех этих файлах свойств. Ручное изменение - это не так. Мне нужно написать приложение, которое делает эту функциональность.
Я пробовал использовать механизм ресублирования. Но, используя ресурс, мы можем получить только один файл свойств. Я пробовал ResourceBundle.getBundle(String,Locale)
и ResourceBundle.getBundle(String)
методов.
Мне нужна итерация через этот файл свойств и обновление для ключа.
Моя первоначальная проблема исправлена.
Я сделал это так:
File[] files = new File("src/main/resources").listFiles();
for (File file : files) {
if (file.getName().endsWith("properties")) {
//my logic
}
Но когда я сделал это, мои комментарии в свойствах файла были удалены, и порядок был изменен. Я также хочу сохранить порядок ключа и комментарии в файле свойств.
Чтобы сохранить порядок, я попытался с помощью:
public static class LinkedProperties extends Properties {
private final HashSet<Object> keys = new LinkedHashSet<Object>();
public LinkedProperties() {
}
public Iterable<Object> orderedKeys() {
return Collections.list(keys());
}
public Enumeration<Object> keys() {
return Collections.<Object>enumeration(keys);
}
public Object put(Object key, Object value) {
keys.add(key);
return super.put(key, value);
}
}
Но это вызвало некоторые изменения в паре ключ-значение в файле свойств. Некоторый особый персонаж прибавил.
Пожалуйста, помогите мне, чтобы сохранить комментарии и порядок
Прочитайте их как файлы, а не как ресурс. Невозможно обновить ресурс в java. – talex
Почему это так сложно, поскольку все ваши файлы находятся в одной папке? Прочитайте каждый файл, сохраните содержимое в памяти, обновите требуемый ключ и запишите файл обратно – Ironluca