2011-06-20 57 views
1

我製作了一個java應用程序,它可以處理輸入的幾個矩陣,然後輸出一些文本。目前矩陣在我的應用程序中進行了硬編碼(用於測試),但重新編譯對於新矩陣來說相當愚蠢。用java中的數組讀取配置文件

所以我正在尋找一個適合輸入矩陣的配置文件格式。

我知道我可以輕鬆地讀取ini文件(What is the easiest way to parse an INI file in Java?),但是隨後將[[1,2,3],[4,5,6]]這樣的東西解析到矩陣中可能需要惱人的字符串操作。

有誰知道一個很好的方法來閱讀這些矩陣?

回答

3

您可以使用JSON作爲數據交換格式。看看JSON in Java

+0

JSON很有趣,很便攜..我喜歡它(從我的php和js體驗) – Tominator

3

CSV文件怎麼樣?

您的輸入可能看起來像

1;2;3 
4;5;6 

也有一些已建成的CSV解析器各地......像http://commons.apache.org/sandbox/csv/

+0

CSV很簡單。簡單很好。比Apache的解析器多得多:http://www.google.com/search?q=java+csv –

+0

既然你控制了你的輸入,你可以簡單地爲行和列使用兩個分隔符,並使用String.split )來解析它們。另一種方法是使用一種類型的分隔符,並將行和列計數加載到文件中。 – bdares

+0

CSV是一個方便的格式,但我使用了一組〜15個小矩陣,所以我需要確保所有單獨的文件都是按順序排列的,並且維護起來有點棘手。這不是一個糟糕的解決方案,只是沒有一個我會遵循這種情況下,謝謝! – Tominator

1

我第二次在csv文件。但是,使用屬性文件也很方便,一行代表一個矩陣。類似這樣的:

property.test="A,B,C;A1,B1,C1;A2,B2,C2"; 

然後使用java.util.Properties來讀取文件。

解析: 這裏的訣竅是在選擇分隔符時,它們不能出現在條目本身中。

String str = "A,B,C;A1,B1,C1;A2,B2,C2"; 
String[] rows = str.split(";"); 
if(rows != null && rows.length > 0){ 
    String[][] result = new String[rows.length][]; 
    for(int row = 0; row < rows.length; row++){ 
     result[row] = rows[row].split(",");  
    } 
} 
+0

屬性庫和示例代碼是一個加號!但仍然需要解析和了解分隔符,而JSON處理它們(轉義規則等)..感謝您的幫助! – Tominator