2016-09-19 15 views
-1

web1.propertiesweb2.propertiesweb3.propertiesのような3つのプロパティファイルがあります。単一のプロパティオブジェクトを使用して、一度にすべてのプロパティファイルをロードしたいと思います。Javaを使用して複数のプロパティファイルをロードして読み込む方法

Properties prop = new Properties(); 
prop.load("web1.properties"); 
prop.load("web2.properties"); 
prop.load("web3.properties");` 

私は以下のコードを複数のプロパティファイルをロードしようとしています。

public class ReadFileExtension { 
    static Properties prop = new Properties(); 
    public static void main(String[] args) throws IOException { 
     String projectFolder = System.getProperty("user.dir"); 
     File f1 = new File(projectFolder); 
     File[] listOfFiles = f1.listFiles(); 
     System.out.println("Length:"+listOfFiles.length); 
     for(int i=0;i<listOfFiles.length;i++){ 
      if (listOfFiles[i].isDirectory()) { 
       //System.out.println("File " + listOfFiles[i].getAbsolutePath()); 
       String prop1 = listOfFiles[i].getAbsolutePath(); 
       if(prop1.contains("properties")){ 
        System.out.println(prop1); 

        File folder = new File(prop1); 
        File[] listOfFiles1 = folder.listFiles(); 

         for (int j = 0; j < listOfFiles1.length; j++) { 
          if (listOfFiles1[j].isFile()) { 
          //System.out.println("Feature File: " + listOfFiles1[j].getAbsolutePath()); 
          //prop.load(new FileInputStream(listOfFiles1[j].getAbsolutePath())); 
          prop.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(listOfFiles1[j].getAbsolutePath())); 
          } 
         } 
       } 
       } 
     } 
     System.out.println("Prop 1: "+prop.getProperty("ApplicationURL")); 
     System.out.println("Prop 2: "+prop.getProperty("Application")); 
    } 
} 
+0

[this](http://stackoverflow.com/questions/5093432/multiple-properties-files)のようなものを使用できます。 – Abhishek

+1

投稿したコードを実行すると、何が得られましたか? –

+0

@Abhishek NullPointerException - そのリンクでコードを実行したとき。 – tsivarajan

答えて

0

この構文を使用して複数のプロパティを読み込むことができます。

Properties properties = new Properties(); 

properties.load(new FileInputStream("web1.properties")); 

Properties properties2 = new Properties(); 
properties2.load(new FileInputStream("web2.properties")); 

properties.putAll(properties2); 

読み込みプロパティは同じです。

+0

これは2つのプロパティーファイル用です。私はこのような3つのプロパティをロードする必要があります。 – tsivarajan

+0

最初のオブジェクトに第3のファイルとプロパティを読み込むコードを追加してください –

+0

私の編集を確認してください。 – tsivarajan

1

私はリンクAbhishekはあなたが仕事を提供すると思います。

私は自分のローカルマシンでテストして、うまく動作します。

コード:

public class MultiplePropertyLoader { 

    private static Properties properties; 

    public static void main(String[] args) { 

     try { 
      properties = new Properties(); 
      properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("resources/SecurityKey.properties")); 
      properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("resources/SecurityKey1.properties")); 
      properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("resources/SecurityKey2.properties")); 

      System.out.println("::: Property File 1 Data :::"); 
      System.out.println(properties.getProperty("ENCRYPTION_KEY")); 
      System.out.println(properties.getProperty("USERNAME")); 
      System.out.println(properties.getProperty("PASSWORD")); 

      System.out.println("::: Property File 2 Data :::"); 
      System.out.println(properties.getProperty("ENCRYPTION_KEY1")); 
      System.out.println(properties.getProperty("USERNAME1")); 
      System.out.println(properties.getProperty("PASSWORD1")); 

      System.out.println("::: Property File 3 Data :::"); 
      System.out.println(properties.getProperty("ENCRYPTION_KEY2")); 
      System.out.println(properties.getProperty("USERNAME2")); 
      System.out.println(properties.getProperty("PASSWORD2")); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

問題が解決しない場合は、私を投稿してください。

実行コードとサンプルデータがあるmy git repository URLです。 リポジトリをクローンしてローカルマシンで実行すると、動作します。

+0

こんにちは@tsivarajanこの回答があなたの問題を解決した場合は、答えを受け入れてください。 –

関連する問題