プロパティファイルを動的にロードし、ファイルを変更して保存するために、Apache Commons 構成を調べようとしています。
同じデモコードを書きました。
コードスニペット
package ABC;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
public class Prop {
public static void main(String[] args)
{
try {
URL propertiesURL = Prop.class.getResource("/d1.properties");
if (propertiesURL == null) {
System.out.println("null");
}
String absolutePath=propertiesURL.getPath();
PropertiesConfiguration pc = new PropertiesConfiguration(absolutePath);
pc.setReloadingStrategy(new FileChangedReloadingStrategy());
String s=(String)pc.getProperty("key_account_sales");
System.out.println("s is " + s);
pc.setAutoSave(true);
pc.setProperty("key_account_sales", "Dummy");
pc.save();
System.out.println("Modified as well");
String sa=(String)pc.getProperty("key_account_sales");
System.out.println("s is " + sa);
}catch(ConfigurationException ce)
{
ce.printStackTrace();
}
}
}
コードを複数回実行すると、プロパティの更新された値が適切に表示されますが、変更はプロパティ ファイルに表示されません。
ワークスペース全体とプロジェクトを更新しようとしましたが、プロパティ ファイルには以前のエントリが表示されますが、このコードでは更新されたエントリがコンソールに表示されます。
プロパティ ファイルが更新されないのはなぜですか?
IDE ワークスペースの bin ディレクトリ内に同じ名前の新しいファイルが作成されていることに気付きました。この新しいファイルには、必要な変更が含まれています。
ただし、古いファイルを新しい値で更新し、新しいファイルを作成する代わりに、古いファイル自体を更新する必要があります。
私のプロパティファイルは、Webアプリケーションパッケージ内にあります
Dem1
の名前で
Prop1.prop
このプロパティファイルを別のクラスから読みたいと言う
読書.java
別のパッケージの中にあります
Dem2
、この同じプロパティ ファイルで変更を行い、別のユーザーに表示します。これは、アプリケーション サーバーにデプロイされている Web アプリケーションです。
単純なファイル(メイン関数)で絶対パスを使用した後でも、同じファイルの変更が反映されず、新しいファイルに更新されます。
私は非常に小さな間違いをしていますが、誰か助けてください。
絶対パスを使用すると、通常のメイン メソッドでも同じプロパティ ファイルを変更できません。提案してください。
src フォルダの同じファイルを更新する代わりに、bin ディレクトリに新しいファイルが作成されます。