ちょっと変わったことがやりたかったんです。
やりたいことは以下の通り。
propertiesを使って、値を読み取る。 その値の分だけ、スペース文字列を表示させたい。
import java.util.Properties; import java.io.InputStream; import java.io.FileInputStream; import java.io.BufferedInputStream; public class Main { public static void main(String[] args) { Properties p = new Properties(); InputStream inStream = null; try { inStream = new BufferedInputStream( new FileInputStream("env.properties")); p.load(inStream); } catch(Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); System.exit(1); } finally { if (inStream == null) { try { inStream.close(); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); System.exit(1); } } } String STR_LENGTH = p.getProperty("str_length"); int length = Integer.parseInt(STR_LENGTH); String str = String.format(String.format("%%%ds",length),' '); System.out.println("-->"+str+"<--"); } }
env.properties
str_length=3
実行結果
[rdera]% javac Main.java [rdera]% java Main --> <--
一応、やりたかったことは達成。
学んだこと
プロパティファイルから値を読み取るときに使用したストリームは閉じても閉じなくても良い。 今回のソースだとinStreamのこと。なんか気になるんで閉じた。
プロパティファイルから読み取れる値はString。 intとして使いたければ、読込んでから変換が必要。
formatの使い方。
気になること
String str = String.format(String.format("%%%ds",length),' ');
formatを2回使ってる。
なんか、賢いやり方がありそうな気配。
参考
http://d.hatena.ne.jp/ykhr-kokko/20070719#1184817604
動的に桁数を指定して表示させたい - rderaログ
0埋めや桁数指定などフォーマット指定の文字列を取得する - unsigned
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle
hellohiro.com
Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle