Javaで環境変数を取得する | システムエンジニアライフ

Javaで環境変数を取得する

ヘッダー広告
スポンサードリンク

Javaで環境変数を取得する方法についての記事になります。

ちなみに環境変数を実際の業務で開発をしていて利用するタイミングは、環境の間で差分が発生している時に、それをカバーするために利用します。
具体的には、開発環境、ステージング環境、本番環境など、開発を進めていくには様々な環境でプログラムを実行させます。

皆さんご存知だとは思いますが、開発環境は本番環境ほど綺麗な状態ではなく、ファイルがごちゃごちゃになっているなんてことも多々あると思います。
そのため、ファイルの保存場所なんかも本番とは異なったりするので、今回ご紹介するような環境変数を利用して、各環境ごとの差異を埋めていくということになります。

では実際のコードを確認していきます。

環境変数を利用する

指定した環境変数を呼び出す

Javaで環境変数を呼び出すには、以下のコードを利用します。

System.getenv(String name)

参考:クラスSystem

実際にコードを書いてみます

package test;

public class Testenvironment{

	public static void main(String[] args) {
		String getTmp;

		getTmp = System.getenv(args[0]);
		System.out.println(getTmp);

	}

}

では動かしてみます。

ここでは、作成したTestenvironment.javaを実行する直前に、TEST1という変数を作成して、Testenvironmentを実行する際の引数にTEST1を渡して呼び出しています。
するとTEST1の変数に設定したtest1が返却されることが分かりました。
これがJavaで環境変数を呼び出す方法になります。
今回は、argsを利用して引数を呼び出しましたが、そのまま直接取り出したい変数を指定してあげることでも対応可能です。

全ての環境変数を取得する

続いて全ての環境変数を取得する方法もお伝え致します。

全ての環境変数を呼び出すには、先ほどのSystem.getenvの引数を利用しないで呼び出します。

System.getenv()

参考:クラスSystem

では実際のコードをご紹介致します

package test;

import java.util.Map;

public class Testenvironment2{

	public static void main(String[] args) {
		Map<String,String> getTmp = System.getenv();

		if (getTmp.containsKey("TEST2")){
		      System.out.println(getTmp.get("TEST2"));
		    }else{
		      System.out
		      .println("対象の環境変数は設定されていません。");
		}

	}

}

では動かしてみます。

今回は、作成したTestenvironment2.javaを実行する直前に、TEST2という変数を作成してから、Testenvironment2を引数なしで実行しています。
すると、まずTestenvironment2は、System.getenv()で取得した全ての環境変数をgetTmpというマップに格納します。
その後、getTmpから、”TEST2″のキーを取得して値を出力しているという流れになります。

もし全ての環境変数を出力したい場合には、for文を利用して出力してあげればいいです。
ちなみにその書き方の例です。

for (String data : getTmp.keySet()) {
    System.out.println(getTmp.get(data));
}

これがJavaで全ての環境変数を呼び出す方法になります。

環境変数を取得する際の注意点(エンコード)

最後に環境変数を取得する際の注意点をお伝え致します。
これは私が実際の開発で引っかかって、バグを作ってしまいました。
反省も含めて記載しておきます。

通常、Javaで”\”(円マークやバックスラッシュ)を出力するには、\を重ねて2つつける必要があります。
“\”はエスケープ文字だからです。

ですが、環境変数から取得する際には、\はエスケープ文字としては扱われないので、”\”1つだけでいいです。

では実際に試してみましょう。

package test;

public class Testenvironment3{

	public static void main(String[] args) {
		String getTmp;
		String inputTmp;

		getTmp = System.getenv("TEST3");
		inputTmp = "C:\\TEST";

		System.out.println(getTmp);
		System.out.println(inputTmp);

	}

}

実行結果です

今考えると単純なミスですが、普段は”\”を使わないのでついつい間違えてしまいました。
同様のミスがないようにご注意ください。

本日は以上。

フッター広告

スポンサードリンク



シェアする

  • このエントリーをはてなブックマークに追加

フォローする