【问题标题】:Read config file with arrays in java在java中读取带有数组的配置文件
【发布时间】:2011-09-18 17:56:26
【问题描述】:

我制作了一个 java 应用程序,它可以操作一些作为输入的矩阵,然后输出一些文本。目前,矩阵在我的应用程序中是硬编码的(用于测试),但是对于新矩阵来说,重新编译是相当愚蠢的。

所以我正在寻找一种适合输入矩阵的配置文件格式。

我知道我可以轻松地读取 ini 文件 (What is the easiest way to parse an INI file in Java?),但是然后将 [ [ 1, 2, 3], [4, 5, 6] ] 之类的东西解析为矩阵可能需要烦人的字符串操作。

有人知道读取这些矩阵的好方法吗?

【问题讨论】:

    标签: java configuration-files


    【解决方案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(",");      
       }
     }
    

    【讨论】:

    • 属性库和示例代码是加分项!但仍然需要解析和知道分隔符,而 JSON 处理它们(转义规则等).. 感谢您的帮助!
    【解决方案2】:

    您可以使用JSON 作为数据交换格式。看看JSON in Java

    【讨论】:

    • JSON 很有趣而且非常便携。我喜欢它(来自我的 php 和 js 经验)
    【解决方案3】:

    CSV 文件怎么样?

    您的输入可能类似于

    1;2;3
    4;5;6
    

    还有一些已经构建好的 CSV 解析器......比如http://commons.apache.org/sandbox/csv/

    【讨论】:

    • CSV 很简单。简单就好。不止 Apache 的解析器可用:google.com/search?q=java+csv
    • 由于您正在控制输入,您可以简单地为行和列使用两个分隔符,然后使用 String.split() 来解析它们。另一种方法是使用一种类型的定界符,并在文件前加上行数和列数。
    • CSV 是一种方便的格式,但我使用的是一组约 15 个小矩阵,所以我需要确保所有单独的文件都井井有条,而且维护起来有点棘手.这不是一个糟糕的解决方案,只是在目前的情况下我不会遵循这个解决方案,不过谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 2021-07-01
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多