grib/src/main/java/ucar/nc2/grib/grib2/table/CfsrLocalTables.java
private void initLocalTable() {
    String tableName = config.getPath();
    ClassLoader cl = this.getClass().getClassLoader();
    try (InputStream is = cl.getResourceAsStream(tableName)) {
      if (is == null) {
        throw new IllegalStateException("Cant find " + tableName);
      }
      try (BufferedReader br = new BufferedReader(new InputStreamReader(is, CDM.utf8Charset))) {
        while (true) {
          String line = br.readLine();
          if (line == null) {
            break;
          }
          if ((line.length() == 0) || line.startsWith("#")) {
            continue;
          }
          String[] flds = StringUtil2.splitString(line);

          int p1 = Integer.parseInt(flds[0].trim()); // must have a number
          int p2 = Integer.parseInt(flds[1].trim()); // must have a number
          int p3 = Integer.parseInt(flds[2].trim()); // must have a number
          StringBuilder b = new StringBuilder();
          int count = 3;

          while (count < flds.length && !flds[count].equals(".")) {
            b.append(flds[count++]).append(' ');
          }
          String abbrev = b.toString().trim();
          b.setLength(0);
          count++;

          while (count < flds.length && !flds[count].equals(".")) {
            b.append(flds[count++]).append(' ');
          }
          String name = b.toString().trim();
          b.setLength(0);
          count++;

          while (count < flds.length && !flds[count].equals(".")) {
            b.append(flds[count++]).append(' ');
          }
          String unit = b.toString().trim();

          Grib2Parameter s = new Grib2Parameter(p1, p2, p3, name, unit, abbrev, null);
          local.put(makeParamId(p1, p2, p3), s);
        }
      }

    } catch (IOException ioe) {
      throw new RuntimeException(ioe);
    }
  }
private void initLocalTable() {
    String tableName = config.getPath();
    ClassLoader cl = this.getClass().getClassLoader();
    try (InputStream is = cl.getResourceAsStream(tableName)) {
      if (is == null) {
        throw new IllegalStateException("Cant find " + tableName);
      }
      try (BufferedReader br = new BufferedReader(new InputStreamReader(is, CDM.utf8Charset))) {
        while (true) {
          String line = br.readLine();
          if (line == null) {
            break;
          }
          if ((line.length() == 0) || line.startsWith("#")) {
            continue;
          }
          String[] flds = StringUtil2.splitString(line);

          int p1 = Integer.parseInt(flds[0].trim()); // must have a number
          int p2 = Integer.parseInt(flds[1].trim()); // must have a number
          int p3 = Integer.parseInt(flds[2].trim()); // must have a number
          StringBuilder b = new StringBuilder();
          int count = 3;

          while (count < flds.length && !flds[count].equals(".")) {
            b.append(flds[count++]).append(' ');
          }
          String abbrev = b.toString().trim();
          b.setLength(0);
          count++;

          while (count < flds.length && !flds[count].equals(".")) {
            b.append(flds[count++]).append(' ');
          }
          String name = b.toString().trim();
          b.setLength(0);
          count++;

          while (count < flds.length && !flds[count].equals(".")) {
            b.append(flds[count++]).append(' ');
          }
          String unit = b.toString().trim();

          Grib2Parameter s = new Grib2Parameter(p1, p2, p3, name, unit, abbrev, null);
          local.put(makeParamId(p1, p2, p3), s);
        }
      }

    } catch (IOException ioe) {
      throw new RuntimeException(ioe);
    }
  }
see http://www.nco.ncep.noaa.gov/pmb/docs/grib2/grib2_doc.shtml