Java Buffered Reader返回并跳转

时间:2016-05-12 15:50:44

标签: java

如果我有一个bufferedReader,它会从以下文本文件中读取行,如何让读者读取第一个ITEM的标记ITEM_TYPE,然后返回并读取标记CODE并继续读取所有其他标记(第一个项目)?

 ITEM_LIST
{
  ITEM
{
    CODE ADLS443
    ITEM_TYPE tv
    MODEL IDL32KJX4300
    MODEL_YEAR 2016
    MANUFACTURER Samsung
    PRICE 350
    PANEL_TYPE LCD
    DIMENSIONS 32
    RESOLUTION "Full HD"
    INTERFACES "HDMI USB SCART"
    PIECES 43
}
ITEM
{
    CODE KD444211
    ITEM_TYPE tv
    MODEL KDL49DDR4600
    MODEL_YEAR 2014
    MANUFACTURER Sony
    PRICE 600
    PANEL_TYPE LED
    DIMENSIONS 49
    RESOLUTION "Ultra HD"
    INTERFACES "HDMI USB SCART Ethernet WiFi"
    PIECES 8
}

1 个答案:

答案 0 :(得分:1)

您可以为解析添加中间步骤。

  1. 将所有键值对(用于节)解析为映射。
  2. 使用地图值创建所需对象。
  3. 这里不知道你的其余代码是如何解析你的数据的伪代码。

    Map<String, String> values = new HashMap<>();
    // For each key value pair in section
      String key = // parse key name
      String value = // parse key value
      values.put(key, value);
    
    String type = values.get("ITEM_TYPE");
    if (type.equals("tv"))
      TvObject tv = new TvObject(values);
    }
    

    修改

    您不应该解析特定的键值,而是解析文件的格式。

    ITEM
    {
        <key> <value>
        <key> <value>
        <key> <value>
    }
    

    以下是如何解析可以展开的INI文件的example