2009-07-07 14 views
4

ファイルの行をセットまたはリストに読み込みたい。これを行うための標準的なユーティリティはありますか?私が行うことができセットに相当するjava.util.Propertiesはありますか?

これらの行の形式のものである場合、[キー] = [値]:

Properties properties = new Properties(); 
properties.load(new FileInputStream(file)); 

値は、単一のエントリを1行に1つずつあり、各値は、セット/リスト

のエントリとなります

私はそれがLineReader、InputStreamsと多くの定型文で行うことができることを知っていますが、私はこれを避けるために探しています。

答えて

3

はい、Propertiesクラス自体がconvertionsためのアクセサメソッドを提供します。

公共設定<のMap.Entry>のentrySet()

は、このマップに含まれるマップのキーセットビューを返します。セットはマップによってサポートされているため、マップの変更はセットに反映され、その逆もあります。イテレータの独自の削除操作またはイテレータによって返されたマップエントリのsetValue操作を除いて、セット上の反復処理が進行中にマップが変更された場合、反復の結果は未定義です。このセットは、Iterator.remove、Set.remove、removeAll、retainAll、およびclear操作を介してマップから対応するマッピングを削除する要素の削除をサポートしています。 addまたはaddAll操作はサポートされていません。

公共設定< K>のkeySet()

このマップに含まれるキーのキーセットビューを返します。セットはマップによってサポートされているため、マップの変更はセットに反映され、その逆もあります。セット上の反復処理中にマップが変更された場合(イテレーターの独自の除去操作を除いて)、反復の結果は未定義です。このセットは、Iterator.remove、Set.remove、removeAll、retainAll、およびclear操作を介してマップから対応するマッピングを削除する要素の削除をサポートしています。 addまたはaddAll操作はサポートされていません。

代わりに、あなたは要素()

+0

ありがとうございました。値がnullになるため、失敗していると思われました。エントリに「=」というサフィックスが付いているようです。 答えに1つのコメントがあり、ジェネリックがhtmlとして解釈されているようです。 –

+0

固定、ありがとう:) – dfa

+0

上記のコメントへの編集は、値が空の文字列なので、エントリのtoString()は[key] = ""になります –

0

を使用してプロパティを列挙することができ、標準のユーティリティによって、あなたはサードパーティのライブラリを意味し、場合、私の答えは:ほとんど!

Apache Commonsは、ほぼすべてのJavaアプリケーションの一部である価値があります。 Apache CommonsのIOUtilsを使って、以下のように記述することで実現できます。

final List list = IOUtils.readLines(new FileInputStream(file)); 
    Set<String> set = new HashSet<String>(list); 

このセットにはファイルの各行が含まれます。

注:IOUtilsはジェネリックを意識していないため、このコードはコンパイルに関する警告を表示します。

+0

なぜこれがdownvotedされているか分かりません。この方法の利点は、SetがMapに裏打ちされていないことです。欠点は、ファイル内のコメントなどを無視しないため、自分で処理する必要があるか、またはファイルが存在しないことを確認することです。 –

関連する問題