2016-05-25 19 views
2

属性の1つが変更された場合、別のインスタンスが必要なクラスがあります。これらの変更は、実行時にプロパティファイルから読み込まれます。 私はすべての単一のインスタンスの性質を詳しく単一のファイルを持っているしたいと思います:複数のクラスインスタンスの単一ファイルから複数のプロパティセットを読み込む

------------ 
name=Milan 
surface=.... 
------------ 
name=Naples 
surface=.... 

は、どのように私は(多分Properties[]を作成する)別のプロパティクラスのプロパティの各セットを読み込むことができますか?これを行うためのJavaの組み込みメソッドはありますか? 私はそれを手動で解析すべきですか?セットの中で分割ストリングを見つけると、いつInputStreamを作成できますか?

ArrayList<Properties> properties = new ArrayList<>(); 
if(whateverItIs.nextLine() == "----"){ 
     InputStream limitedInputStream = next-5-lines ; 
     properties.add(new Properties().load(limitedInputStream)); 
} 

上記のようなものです。そして、ところで、ファイルから直接クラスを作成するコンストラクタメソッドはありますか?

EDIT:自分のために見ている正しい方向を指していても問題ありません。

答えて

2

まず、ファイル全体を1つの文字列として読み取ります。次に、splitStringReaderを使用します。

String propertiesFile = FileUtils.readFileToString(file, "utf-8"); 
String[] propertyDivs = propertiesFile.split("----"); 
ArrayList<Properties> properties = new ArrayList<Properties>(); 

for (String propertyDiv : propertyDivs) { 
    properties.add(new Properties().load(new StringReader(propertyDiv))); 
} 

Javaは、このような組み込みメソッドを持っていないので、上記の例では、Stringワンライナーにファイルのapache commons-ioライブラリを使用しています。しかし、ファイルの読み込みは、標準のJavaライブラリを使用して簡単に実装できます。Whole text file to a String in Java

+0

リソースを取得するファイルにアクセスするために使用します。これは正しいアプローチですか: 'File f = new File(this.getClass()。getClassLoader()。getResource(" cities.prop ")。getPath());' – Vale

+0

@Vale私の意見ではOKです。これを見てください:http://stackoverflow.com/a/1318386/3899583 – vojta

関連する問題