2016-11-21 21 views
0

我想讀取一個數據文件,該文件中包含幾個用於我的程序的常量(例如MAXARRAYSIZE)。
我再想這些常量輸入類似是在我的程序的任何地方訪問:ConstantsClassName.MAXARRAYSIZE。我如何實施這個課程?在文件中讀入常量#java

一旦從數據文件中分配,這些常量將永遠不會再次在程序執行期間更改值。

謝謝。

+2

你可以創建一個屬性文件並添加常量名和值作爲鍵 - 值對。然後使用resourcebundle類讀取數據。 [這個鏈接](https://docs.oracle.com/javase/tutorial/i18n/resbundle/concept.html)解釋了這個概念。 [示例](https://examples.javacodegeeks.com/core-java/util/resourcebundle/java-resourcebundle-example/) – Laxman

回答

0

ConstantsClassName類中使用靜態區塊。

public class ConstantsClassName{ 
    public static final String MAXARRAYSIZE; 
    static{ 
     // read your file and store the data in; 
     MAXARRAYSIZE = valueRetrievedFromFile; 
    } 
} 

MAXARRAYSIZE應該MAX_ARRAY_SIZE如果按照常量聲明Java約定。

+0

謝謝!外部簡單: 公共類ConstantsclassName {...} – user1714575

+0

歡迎您:)是的。我添加了類聲明。 – davidxxx

0

如果他們有很多常量在您的文件,您可以使用下面的代碼片段:

public static final HashMap<String, String> keyValues = new HashMap<>(); 
static{ 
    BufferedReader br = null; 
    String line = null; 
    try{ 
     br = new BufferedReader(new FileReader("datafile.txt")); 
     while((line=br.readLine())!=null){ 
      //if Constant name and Value is separated by space 
      keyValues.put(line.split(" ")[0], line.split(" ")[1]); 
     } 
    }catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 

現在使用鍵值的HashMap,讓你擁有像

恆定值keyValues.get( 「MAXARRAYSIZE」);

以這種方式,您不必爲多個常量定義多個常量變量,只有keyValues HashMap足以存儲所有常量及其值。希望能幫助到你。