2017-02-22 7 views
0

私はこのコードを持っている:PROPERTIES_FILE_PATH = "fileName.properties"同じパッケージにファイルを書き込む方法は?

try (OutputStream outputStream = new FileOutputStream(PROPERTIES_FILE_PATH)) { 
      properties.setProperty("test", "test"); 
      properties.store(outputStream, null); 
     } 

これは、プロジェクトのルートにファイルを作成します。私はこれを回避するために見つけた唯一の方法は、意味、ファイルの絶対パスを置くことです:

src/main/java/com/comany/fileName.properties 

をしかし、人々は「実生活」に、というIDE外このwont'tの仕事を私に言いました... jarファイルにはsrc/main...というようなものはないからです。 解決策は何ですか?

+0

jarと同じフォルダの下にファイルを書き込むことができます – haifzhan

+0

'しかし、人はこれがIDEの外では実生活で動かないと私に言っていました。何が起こったのか見てみましたか? –

+0

技術的には、一時ファイルを作成し、それを組み込みの 'ZipFile'ユーティリティを使ってjarファイルに保存することができます。しかし、私は本当にそれに反対することをお勧めします。それは楽しい運動かもしれませんが。しかし、そのようなものを配備しないでください。 –

答えて

0

通常、内部的に保存されているファイルは変更しません。その代わりに、デフォルトファイルをJAR内に格納し、変更を外部ファイルとして保存する必要があります。

Class.getResourceAsStream()を使用すると、JARファイル内の非コードリソースにアクセスできます。

+0

このメソッドは入力ストリームを返しますが、OPはファイルからの読み込みではなく、ファイルへの書き込みを行います。 –

+0

ええ、内部ファイルへの書き込みが最も理想的ではないことを示唆しています。 – Nixivious

0

あなたは私が、私は私のプロパティファイルのパスを入れて、設定ファイルを作成することになった。このようにそれを行うには、それを

public class Configuration { 
private Properties parameters; 
private static Configuration instance = null; 

private Configuration() { 
    parameters = new Properties(); 
    try { 
     parameters.load(getClass().getClassLoader().getResourceAsStream("fileName.proooooperties")); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public static Configuration getInstance() { 
    return instance == null ? new Configuration() : instance; 
} 


public static void writeProperties(String fileName) { 
    try{ 
     FileOutputStream oFile = new FileOutputStream("fileName.properties", true); 
     parameters.setProperty("test", "testing"); 
     parameters.store(oFile, "comments"); 
     oFile.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public String getParameter(String name) { 
    return parameters.getProperty(name); 
} 
public void setParameters(String name, String value) { 
    parameters.setProperty(name, value); 
} 

}

+0

'getResourceAsStream'は入力ストリームを返します。 OPは、ファイルから読み込むのではなく、ファイルに書き込む必要があります。 –

+0

私はそれを得る、ソースが更新されます。 – bluetata

+0

私が知る限り、 'parameters.setProperty'はプロパティオブジェクトのプロパティだけを設定します。 OPがやりたいものである 'parameters.store'を使ってプロパティオブジェクトをファイルに保存しません。 'parameters.store'にはoutputStreamが必要ですが、' getResourceAsStream'はinputStreamを返します。 –

0

を書くためにsetメソッドsetParameters()を使用することができます私はプロジェクトの外に置いた。

関連する問題