JavaにてCSV行の読み込み

たぶん、こんな感じかな?

  public static String[] splitCSV(String line) {
    final Pattern p = Pattern.compile(
        "\\G\\s*(?:\"((?:[^\"]+|\"\"\")*)\"|((?:[^,\\s]+[\\s]*?)*))\\s*(?:(,)|\\z)"
      );
    Matcher m = p.matcher(line);
    List<String> ary = new ArrayList<String>();
    while(true) {
      m.find();
      if(m.start(1)!=-1) {
        ary.add(m.group(1).replace("\"\"\"", "\""));
      }
      else if(m.start(2)!=-1) {
        ary.add(m.group(2));
      }
      if(m.start(3)==-1) {
        break;
      }
    }
    return ary.toArray(new String[ary.size()]);
  }