0

プロジェクト外でdatabase.propertiesを取りたいので、ビルドした際にその内容(データベース構成)を変更したい場合jar、プロジェクトを開かなくても簡単にできます。じゃあ何をすればいいの?

4

2 に答える 2

0

Store properties file in your preferred location. Then do the following:

try {

    String myPropertiesFilePath = "D:\\configuration.properties"; // path to your properties file
    File myPropFile = new File(myPropertiesFilePath); // open the file

    Properties theConfiguration = new Properties();
    theConfiguration.load(new FileInputStream(myPropFile)); // load the properties

catch (Exception e) {

}

Now you can easily get properties as String from the file:

String datasourceContext = theConfiguration.getString("demo.datasource.context", "jdbc/demo-DS"); // second one is the default value, in case there is no property defined in the file

Your configuration.properties file might look something like this:

demo.datasource.context=jdbc/demo-DS
demo.datasource.password=123
于 2012-10-08T04:30:43.553 に答える
0

まず、database.propertiesファイルを配置したい場所に配置します。

次に、次のいずれかを実行します。

  1. database.propertiesがあるディレクトリをクラスパスに追加します。次にThread.currentThread().getContextClassLoader().getResource()、ファイルへの URL を取得するか、ファイルgetResourceAsStream()の入力ストリームを取得するために使用します。
  2. Java アプリケーションがファイルの正確な場所を認識してもかまわない場合は、database.properties単純なファイル I/O を使用してファイルへの参照を取得できます ( を使用new File(filename))。

通常、最初のオプションに固執する必要があります。ファイルを任意の場所に配置し、ディレクトリをクラスパスに追加します。そうすれば、Java アプリケーションはファイルの正確な場所を認識する必要はありません。ファイルのディレクトリが実行時のクラスパスに追加されている限り、ファイルを見つけることができます。

例 (最初のアプローチの場合):

public static void main(String []args) throws Exception {
    InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("database.properties");
    Properties props = new Properties();

    try {
        // Read the properties.
        props.load(stream);
    } finally {
        // Don't forget to close the stream, whatever happens.
        stream.close();
    }

    // When reaching this point, 'props' has your database properties.
}
于 2012-10-08T04:12:35.723 に答える