Java -CSV-

カンマ区切りデータの読込み(StringTokenizer利用)

ブランクデータは項目として扱われないので注意が必要

import java.util.StringTokenizer;
public class csvRd1 {
  public static void main(String[] args) {
    String line = "Java,Hello,,,,World";
    //文字列の分割(StringTokenizer)
    StringTokenizer st = new StringTokenizer(line, ",");
    while (st.hasMoreTokens()) {
      System.out.print(st.nextToken() + "\n");
    }
  }
}

カンマ区切りデータの読込み(オリジナルクラス利用)

優秀な方が作成されたクラス

public class csvRd2 {
  public static void main(String[] args) {
    String line = "Java,Hello,,,,World";
    //文字列の分割(オリジナルクラス)
    CSVTokenizer tok = new CSVTokenizer(line);
    while (tok.hasMoreTokens()) {
      //各要素に分割(カンマ区切り)
      System.out.println(tok.nextToken());
    }
  }
}

//オリジナルクラス
public class CSVTokenizer {
  String s = null;
  int i = 0;
  //自分自身に文字列を格納
  public CSVTokenizer(String s){
    this.s = s;
  }
  //1行分データ取得
  public boolean hasMoreTokens(){
    return i < s.length() || 
           i == s.length() && 
           s.charAt(i++ - 1) == ',';
  }
  //各項目に分割(カンマ区切り)
  public String nextToken() {
    StringBuffer sb = new StringBuffer();
    for (; i < s.length(); i++){
      char c = s.charAt(i);
      if (c == ','){
        i++;
        break;
      } else {
        sb.append(c);
      }
    }
    return sb.toString();
  }
}

カンマ区切りデータの読込み(regex利用)

Java version 1.4 以上

import java.util.regex.*;
public class csvRd3 {
  public static void main(String[] args) {
    Pattern pattern;
    String line = "Java,Hello,,,,World";
    //文字列の分割(split)
    pattern = Pattern.compile(",");
    String[] strs = pattern.split(line);
    for (int i=0;i<strs.length;i++) {
      System.out.println(strs[i]);
    }
  }
}

CSVファイルの読込み(regex利用)

データにブランクがある場合も項目として認識される。 Java version 1.4 以上

import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.regex.*;
class csvRd {
  public static void main(String[] args) {
    try {
      Pattern pattern;
      pattern = Pattern.compile(",");
      FileReader filereader = new FileReader("csvf.csv");
      BufferedReader bfrdr = new BufferedReader(filereader);
      while (bfrdr.ready()) {
        //1行分データを取得
        String line = bfrdr.readLine();
        //文字列の分割(split)
        String[] strs = pattern.split(line);
        for (int i=0;i<strs.length;i++) {
          System.out.println(strs[i]);
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

▲このページのTopへ

Programming > java > Java -CSV-