こんにちは。たいら(@tairaengineer2)です。
今回はJavaのプロパティファイルのアウトプットです。
FileInputStreamクラスでFileオブジェクトを生成してプロパティファイルを取得するのではなく、Class.getResourceAsStreamメソッドを使って、プロパティファイルの中身を取得しようと思います。
フォルダ構成
フォルダ構成はこのようにフォルダ分けしてプログラムを格納しています。
Javaプログラム
package calculator;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* プロパティファイルを練習するクラス
*
*/
public class Calculator {
/** 読み込むプロパティファイル */
private Properties properties = new Properties();
/** 円周率 */
private double pi;
/**
* コンストラクタ
*/
public Calculator() {
try {
// プロパティファイルを取得し、ロードする
InputStream stream = Calculator.class.getClassLoader().getResourceAsStream("math.properties");
properties.load(stream);
stream.close();
// 円周率を取得し設定
pi = Double.parseDouble(properties.getProperty("pi"));
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* メインメソッド
* @param args
*/
public static void main(String[] args) {
Calculator calculator = new Calculator();
System.out.println("半径10.5の円の面積:" + calculator.getAreaCircle(10.5));
System.out.println("半径10.5、中心角190度の扇形の面積:" + calculator.getAreaQuarterSector(10.5, 190));
}
/**
* 円の面積を求めるメソッド
* @param radius 円の半径
* @return 円の面積
*/
public double getAreaCircle(double radius) {
return radius * radius * pi;
}
/**
* 扇形の面積を求めるメソッド
* @param radius 円の半径
* @param degree 円の中心角
* @return 扇形の面積
*/
public double getAreaQuarterSector(double radius, int degree) {
return radius * radius * pi * degree / 360;
}
}
Propertiesファイル
#円周率
pi = 3.14
実行結果
半径10.5の円の面積:346.185
半径10.5、中心角190度の扇形の面積:182.70874999999998
ポイント
このプログラムでポイントは以下の点です。
プロパティファイルを読み込むパス
InputStream stream = Calculator.class.getClassLoader().getResourceAsStream("math.properties");
getClassLoaderメソッドを使うことで、どこにプロパティファイルを置いても読み込めるようにしています。
参考にさせて頂いたサイト様
Classpath resources(クラスパスからリソースを読み込むあれこれ。jarの中とか。) - ただぶろぐ
[Java] getResourceAsStreamの使い方
プログラマーの常識をJavaで身につける(9):コードから情報を追い出せ!プロパティファイルの常識 (1/3) - @IT
JavaTips 〜Javaプログラミング編:Javaプログラムからプロパティファイルを参照する - @IT
ほかにも勉強記事を書いてます。
よければご参考ください。