エンジニアの将来って?

現在6年目の元COBOL現Javaエンジニアが、将来への考えや勉強のアウトプット、たまに腎臓について書くブログです

JavaのgetResourceAsStreamメソッドでプロパティファイルを読み込む

こんにちは、たいらです。
今回はJavaのプロパティファイルのアウトプットです。
FileInputStreamクラスでFileオブジェクトを生成してプロパティファイルを取得するのではなく、Class.getResourceAsStreamメソッドを使って、プロパティファイルの中身を取得しようと思います。

目次

フォルダ構成

f:id:Tairax:20170927182850p:plain

フォルダ構成はこのようにフォルダ分けしてプログラムを格納しています。

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 = this.getClass().getResourceAsStream("/properties/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

最初は相対パスでやっていましたが、なぜかエラーが出たので絶対パスで指定しています。
調べたところ、getResourceAsStreamメソッドでパスを指定する時に、()内の最初の文字が「/」だと絶対パスにしなければいけませんでした。
初めて知りました。(;^_^A
あとプロパティファイル内でキーと値を書いた後に「;」が不要なことをすっかり忘れてました。。。
日々勉強せねばですな('◇')ゞ

参考にさせて頂いたサイト様

Classpath resources(クラスパスからリソースを読み込むあれこれ。jarの中とか。) - ただぶろぐ

[Java] getResourceAsStreamの使い方

プログラマーの常識をJavaで身につける(9):コードから情報を追い出せ!プロパティファイルの常識 (1/3) - @IT

JavaTips 〜Javaプログラミング編:Javaプログラムからプロパティファイルを参照する - @IT

ほかにも勉強記事を書いてます。
よければご参考ください。

今までブログで書いたJavaのアウトプット記事のまとめ

私が基本情報処理試験に合格したときの勉強方法をご紹介します!

MTBF、MTTRの違いは?それらを使って表す稼働率とは?情報処理試験の午前問題で出された問題もまとめました!