2011-08-10 19 views
1

ファイルプロパティファイルを使用していて、そのファイルをループしています。ファイル内にある順序でプロパティを取得する方法

Properties Config= new Properties(); 
Config.load(new FileInputStream("c:\\Config.properties")); 
Enumeration e = Config.propertyNames(); 
while (e.hasMoreElements()) 
{ String key = (String) e.nextElement(); 
    System.out.println(key + " -- " + Config.getProperty(key)); 
} 

Cでの私の入力:\ Config.propertiesは

出力

入力

FUN1 = ABC

fun2 = PQR

fun3のMNOです

fun2 -

FUN1 PQR - ABC

fun3 - MNO

にはどうすればいいかを正確に設定ファイルでこれを取得することができます。

答えて

3

java.util.Propertiesは、本質的に順序付けられていないjava.util.Hashtableを拡張しているため、これは使用できません。

あなたのベスト・ベットは、たとえばBufferedReaderまたはScannerなどを使用して自分で読んで解析することです。

しかし、なぜ注文が重要であるのだろうか。これの背後にある機能的な要件を詳しく説明すれば、私が示唆できる選択肢があるかもしれません。与えられた例に基づいて、私はあなたが以下であることを示唆していることができるものに最も近い:あなたがロードされてプロパティからSortedMapを作成したい場合がありますので

List<String> funs = new ArrayList<String>(); 

for (int i = 1; i < Integer.MAX_VALUE; i++) { 
    String fun = config.getProperty("fun" + i); 
    if (fun == null) break; 
    funs.add(fun); 
} 

// ... 
+0

返信ありがとう、プロパティファイルからメソッドを渡そうとしています – user885791

+0

私はまだ機能要件を理解していません。とにかく、私は答えを編集し、それがあなたの要求に最も適していると私が推測する*の提案を加えました。それは少なくともあなたに新しい洞察を与えなければなりません。ああ、[Java命名規則](http://www.oracle.com/technetwork/java/codeconventions-135099.html#367)を尊重してください。変数名は小文字で始まります。 – BalusC

+0

私はExcelファイルを読んでおり、列単位でいくつかの操作を実行する必要があります。列1のために、私は次の列7のメソッドのために、2つのメソッドだけを呼び出す必要があります。これらの値が変化するたびに、私はそれをCongigurableとして作成しようとしています – user885791

1

プロパティは、注文したマップではありません。これにより、キーが自然に順序付けされることが保証されます。しかし、私はあなたがプロパティファイルで指定したものであることを望むと仮定します。自動的に行う方法はありません。あなた自身でコード化する必要があります。そこにあれば、私はショックを受けるだろう

BalusCは、ファイルAPIを使用し始めてからのラインで読み取る行を示唆したように、ペア/タプルオブジェクトを作成し、Listオブジェクトに挿入したり、使用状況の要件

0

に基づいてSortedMapのためにそれを追加すでにこれを行っているライブラリではありません。たとえば、Apache Configurationを試してください。

関連する問題