Java CSVファイル

import java.io.File;

import java.io.FileReader;

import java.io.BufferedReader;

import java.io.IOException;

class Sample {

public static void main(String args[]) {

try {

File f = new File(“sample.csv”);

BufferedReader br = new BufferedReader(new FileReader(f));

String line;

// 1行ずつCSVファイルを読み込む

while ((line = br.readLine()) != null) {

String[] data = line.split(“,”, 0); // 行をカンマ区切りで配列に変換

for (String elem : data) {

System.out.println(elem);

}

}

br.close();

} catch (IOException e) {

System.out.println(e);

}

}

}

実行結果

1

2

3

4

item_00

item_01

item_10

item_11

以下は配列に CSV データを2次元配列に格納するサンプルです。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

import java.io.File;

import java.io.FileReader;

import java.io.BufferedReader;

import java.io.IOException;

class Sample {

public static void main(String args[]) {

try {

File f = new File(“sample.csv”);

BufferedReader br = new BufferedReader(new FileReader(f));

String[][] data = new String[2][2];

String line = br.readLine();

for (int row = 0; line != null; row++) {

data[row] = line.split(“,”, 0);

line = br.readLine();

}

br.close();

// CSVから読み込んだ配列の中身を表示

for(int row = 0; row < data.length; row++) {

for(int col = 0; col < data.length; col++) {

System.out.println(data[row][col]);

}

}

} catch (IOException e) {

System.out.println(e);

}

}

}

実行結果

1

2

3

4

item_00

item_01

item_10

item_11

文字コードを指定して読み込む

CSV ファイルを読み込むと文字コードによっては、文字化けが発生してしまう可能性があります。そのようなときは InputStreamReader と FileInputStream を使用して、適当な文字コードを指定してあげると、文字化けせずに読み込める場合があります。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

import java.io.File;

import java.io.FileReader;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.FileInputStream;

import java.io.IOException;

class Sample {

public static void main(String args[]) {

try {

File f = new File(“sample.csv”);

InputStreamReader osr = new InputStreamReader(new FileInputStream(f), “SJIS”);

BufferedReader br = new BufferedReader(osr);

String line;

// 1行ずつCSVファイルを読み込む

while ((line = br.readLine()) != null) {

String[] data = line.split(“,”, 0); // 行をカンマ区切りで配列に変換

for (String elem : data) {

System.out.println(elem);

}

}

br.close();

} catch (IOException e) {

System.out.println(e);

}

}

}

http://qiita.com/satio_koibuti/items/e90a9e30db289ac1b1f0

import java.io.FileReader;
import java.io.BufferedReader;
import java.util.StringTokenizer;
import java.io.IOException;

public class CSVFileReadSample {

public static void main(String args[]) {

try {
//ファイルを読み込む
FileReader fr = new FileReader("c:\\test.csv");
BufferedReader br = new BufferedReader(fr);

//読み込んだファイルを1行ずつ処理する
String line;
StringTokenizer token;
while ((line = br.readLine()) != null) {
//区切り文字","で分割する
token = new StringTokenizer(line, ",");

//分割した文字を画面出力する
while (token.hasMoreTokens()) {
System.out.println(token.nextToken());
}
System.out.println("**********");
}

//終了処理
br.close();

} catch (IOException ex) {
//例外発生時処理
ex.printStackTrace();
}
}

}

カンマ区切り文字列を個別に取り出す

カンマ(,)やタブ(\t)などの区切り文字で区切られた形式の文字列を分解して取り出すには、java.util.StringTokenizerクラスを使用します。CSVデータを処理するときなど大変便利です。

(用語)
 ・デリミタ→区切り文字のこと
 ・トークン→区切り文字で分割された1つ1つの文字列のこと

サンプルソースコード

カンマ区切り文字列を個別に取り出すサンプル

import java.util.StringTokenizer;
public class StringTokenizerSample {
    public static void main(String args[]) {
        //カンマ区切り文字列
String val = "AAA,111,BBB,222";
        //StringTokenizerオブジェクトの生成
StringTokenizer st = new StringTokenizer(val , ","); //デリミタも同時に指定する
        //分割した文字を画面出力する
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
}

実行結果

コマンドプロンプト

C:\>java StringTokenizerSample
AAA
111
BBB
222

主要メソッド

【java.util.StringTokenizerクラス主要メソッド】戻値型メソッド説明intcountTokens()分割できるトークンの個数を返すbooleanhasMoreTokens()次のトークンがあるかどうかを返すStringnextToken()次のトークンを返す

文字列カテゴリ

http://java-reference.com/java_string_tonumber.html

http://java-reference.com/java_string_stringbuilder.html

http://java-reference.com/java_basic_this.html

【thisでメソッドやメンバ変数を呼ぶ】

メソッドやメンバ変数を呼ぶ

public class SampleClass {
    private String str;
    public void fnc(){
System.out.println("fnc");
this.str = "hoge"; //メンバ変数「str」にhogeを代入
this.fnc2(); //メソッド「fnc2()」を呼び出し
}
    public void fnc2(){
System.out.println("fnc2");
System.out.println(str);
}
}

★実行用クラス
public class Test {
public static void main(String args[]){
SubClass sb = new SubClass();
sb.fnc();
}
}

http://java-reference.com/java_basic_static.html

クラス名の先頭は大文字とする

javaのクラス名の先頭は大文字、続くアルファベットは小文字とします。
単語の先頭も大文字とします。
※この規則は必ず守りましょう。

 SampleClass
 × sampleClass
 × sampleclass
 × SAMPLECLASS

メソッド名、変数名の先頭は小文字とする

メソッド名の先頭は小文字、続くアルファベットも小文字とします。
但し、続く単語の先頭は大文字とします。
※この規則は必ず守りましょう。

 getValue()
 × GetValue()
 × getvalue()
 × GETVALUE()

メソッド名は、動詞+名詞

メソッド名は基本的に、「動詞+名詞」の構成にします
※基本的になので動詞だけの場合もありますし、ローマ字表記などの場合はあてはまりません。
※この規則については、なるべくこうした方がいいですぐらいの認識でいいと思います。

 getValue()
 × valueGet()
  get()
  syutoku()

定数名は全て大文字

定数(final宣言した変数)の名称は全て大文字で表記します
※この規則は必ず守りましょう。

 STS_OK
 × sts_ok
import java.util.Arrays;
import java.util.List;
import java.util.Iterator;

public class ArrayToListSample {
public static void main(String args[]) {

//String型の配列を生成
String[] s = {"A", "B", "C"};

//配列をList型に変換する
List li = Arrays.asList(s);

//Listの全要素を画面表示する
Iterator<String> it = li.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}

}
}

String配列の全要素に値をセットする

import java.util.Arrays;
public class ArraysFillSample {
public static void main(String args[]) {
        //要素数5の配列を生成する
String[] a = new String[5];
a[2] = "hoge"; //3番目の要素のみ値をセットしてみる
        //初期値設定前の状態を画面表示する
System.out.println(Arrays.toString(a));
        //初期値として"*"をセットする
Arrays.fill(a, "*");
        //初期値設定後の状態を画面表示する
System.out.println(Arrays.toString(a));
    }
}
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.