私はたくさん試しましたが、解決策を見つけることができませんでした。パッケージ内のすべてのプロパティファイルを取得し、javaを使用してキー値を更新する方法は?
|
|--src/main/resouces
|
|-updatePropertiesFile.java
|-xyz_en_US.properties
|-xyz_en_AF.properties
|-xyz_en_AE.properties
これは私のプロジェクト構造です。
すべてのプロパティファイルのキーを更新するためにupdatePropertiesFileクラスがあります。私は約200のプロパティファイルを持っています。
私が必要とするのは、これらすべてのプロパティファイルの特定のキーを更新するメソッドを作成する必要があるということです。手動での変更はそれほど実用的ではありません。私はこのfuntionalityを行うアプリケーションを書く必要があります。
私はresoucebundleメカニズムを使って試しました。しかし、リソースバンドルを使用すると、1つのプロパティファイルしか取得できません。私は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