ローカル ディスクのファイル システム パスを表していない可能性があるため、クラスパスの場所に確実に書き込めるとは限りません。(絶対) ディスク ファイル システムの場所にのみ書き込むことができます。
ClassLoader#getResource()
クラスパスからのロードとFileOutputStream
ローカル ディスク ファイル システムへの書き込みの両方に使用できるように、既知の固定ディスク ファイル システムの場所を用意し、それをクラスパスにも追加することをお勧めします。
Tomcat の場合、 のshared.loader
プロパティにより、固定ディスク ファイル システムの場所をクラスパスに追加できます/conf/catalina.properties
。例えば
shared.loader = /var/webapp/conf
固定ディスク ファイル システムの場所を表すプロパティをプロパティ ファイル自体に追加すると便利な場合もあります。
my.location = /var/webapp/conf
こうすれば、次のように読むことができます。
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("foo.properties");
そして名前を付けて保存
properties.store(new FileOutputStream(new File(properties.getProperty("my.location"), "foo.properties")));
以下も参照してください。