20

以下のコードを使用して、プロパティ ファイルに存在するすべてのプロパティ名を読み込もうとしています。

for(Enumeration<String> en = (Enumeration<String>) prop.propertyNames();en.hasMoreElements();){

    String key = (String)en.nextElement();
    System.out.println("Property name is "+key);
}

しかし、私のプロパティファイルには以下の内容があります:

username=
password=
Parent file name=
Child file name =

コードを実行した後、次のように出力されます。

username password Parent Child

プロパティ名にスペースが含まれている場合、最初の単語のみが返されます..

誰でもこれを行う方法を教えてもらえますか?

4

4 に答える 4

46

プロパティ ファイルでスペースをエスケープすることはできますが、見栄えがかなり悪くなると思います。

username=a
password=b
Parent\ file\ name=c
Child\ file\ name=d

split()将来のバグやindexOf()頭痛の種を避けるために、あなたの心が望むものを使って独自の実装を書く方が良いかもしれません。

于 2012-08-07T03:22:52.740 に答える
6

Java.util.Properties=:または空白文字は、プロパティ ファイルからロードする場合のキーと値の区切り文字です。

以下は、その詳細な Javadoc です。public void load(Reader reader)

キーには、最初の非空白文字から始まり、行末記号以外の最初のエスケープされていない=:、または空白文字までの行のすべての文字が含まれます。これらのキー終了文字はすべて、前にバックスラッシュ文字を付けてエスケープすることにより、キーに含めることができます。http://docs.oracle.com/javase/6/docs/api/

于 2012-08-07T04:20:31.510 に答える
-4

私にとってはうまくいっているようです。ここに私のコードがあります:

   Properties prop = new Properties();
   prop.setProperty("test1", "val1");
   prop.setProperty("test number 2", "val number 2");
   prop.setProperty("test 3", "val3");
   prop.setProperty("test #4", "val #4");
   for(Enumeration<String> en = (Enumeration<String>) prop.propertyNames();en.hasMoreElements();){
       String key = (String)en.nextElement();
       System.out.println("'" + key + "'='" + prop.getProperty(key) + "'");
   }

そして出力:

'test 3'='val3'
'test number 2'='val number 2'
'test1'='val1'
'test #4'='val #4'

表示は同じように見えるので、設定に関する限り、それをあなたのものと比較できます。何も表示されない場合は、完全なコードを追加してください。確認します

于 2012-08-07T03:22:44.517 に答える