ゲーマーときどきエンジニア

基本ゲーム記事を書いて、ときどき考えを発信するエンジニアのブログです!

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

こんにちは。たいら(@tairaengineer2)です。
今回は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 = 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

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

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

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

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