[Java] 99 OS名とLinuxディストリビューション名の取得

自製アプリのクロスプラットフォーム化にあたりOSやディストリビューションによってフォントサイズを変える必要が生じたため、以下のメソッドを作成して対応しました。

UbuntuやLinux Mint以外で”cat /etc/issue”コマンドにてディストリビューション名が分かるかどうかは不明です。

言語仕様とは言え、変数(フォントサイズ)を一々配列に格納するのは面倒です。

// Windows,Macはサイズ8,Ubuntuは7,Linux Mintは10に設定

public static int font_size(){
	String OS = System.getProperty("os.name").toLowerCase();
	int[] font_sizes = new int[1];
	if (OS.contains("linux")){
		try{
			Process p = Runtime.getRuntime().exec("cat /etc/issue");
			try{
				p.waitFor();
				InputStream is = p.getInputStream();
				InputStreamReader inputStreamReader = new InputStreamReader(is);
				Stream<String> streamOfString= new BufferedReader(inputStreamReader).lines();
				String str = streamOfString.collect(Collectors.joining());
								
				if (str.contains("Ubuntu")){
					int font_size = 7;
					font_sizes[0] = font_size;
				}else if (str.contains("Mint")){
					int font_size = 10;
					font_sizes[0] = font_size;
				}else{
					int font_size = 8;
					font_sizes[0] = font_size;
				}
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	} else {
		int font_size = 8;
		font_sizes[0] = font_size;
	}
	return font_sizes[0];
}