「Java/サンプル/CSVファイルを読み込む」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
CSVファイルを読み込むサンプル
*** サンプルダウンロード
&ref(CsvRead.java)
&ref(CsvRead.csv)
*** CSVファイルの内容
#highlight(java){{
"1","CSV読込の","2011/01/01"
"2","テスト中","2012/10/01"
"3","読み込めてますかー","2010/09/10"
"4","もっと行を","2011/01/01"
"5","増やしてみましょう","2012/10/01"
"6","これぐらいかな?","2010/09/10"
}}
*** 実行結果
#highlight(java){{
[1, CSV読込の, 2011/01/01]
[2, テスト中, 2012/10/01]
[3, 読み込めてますかー, 2010/09/10]
[4, もっと行を, 2011/01/01]
[5, 増やしてみましょう, 2012/10/01]
[6, これぐらいかな?, 2010/09/10]
}}
*** ソース
#highlight(java){{
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CsvRead {
public static void main(String[] args) {
List<String[]> list = readCsv(new File("CsvRead.csv"));
for (String[] ary : list) {
System.out.println(Arrays.toString(ary));
}
}
// CSVファイルを読み込んで、String配列のリストとして返します。
public static List<String[]> readCsv(File f) {
List<String[]> list = new ArrayList<String[]>();
try {
FileInputStream s = new FileInputStream(f);
// 文字コードを変える場合は、InputStreamReaderの第二引数を変更するとよいです。
InputStreamReader r = new InputStreamReader(s, "Shift_JIS");
BufferedReader br = new BufferedReader(r);
String line;
while((line = br.readLine()) != null) {
line = line.substring(1, line.length() - 1);
String[] ary = line.split("\",\"");
list.add(ary);
}
br.close();
r.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
}
}}
* 解説
- CSVファイルを一行ずつ読み込みます。
- 一行の先頭と末尾の「"」を取り除くため、substringを使っています。
|"hoge","moge","mage" | → | hoge","moge","mage |
#highlight(java){{line = line.substring(1, line.length() - 1);}}
- 先頭と末尾の「"」を取り除いた文字列を、「","」で分割すると、綺麗に各項目に別れます。
| hoge","moge","mage | → |hoge|moge|mage|
#highlight(java){{String[] ary = line.split("\",\"");}}
CSVファイルを読み込むサンプル
*** サンプルダウンロード
&ref(CsvRead.java)
&ref(CsvRead.csv)
*** CSVファイルの内容
#highlight(java){{
"1","CSV読込の","2011/01/01"
"2","テスト中","2012/10/01"
"3","読み込めてますかー","2010/09/10"
"4","もっと行を","2011/01/01"
"5","増やしてみましょう","2012/10/01"
"6","これぐらいかな?","2010/09/10"
}}
*** 実行結果
#highlight(java){{
[1, CSV読込の, 2011/01/01]
[2, テスト中, 2012/10/01]
[3, 読み込めてますかー, 2010/09/10]
[4, もっと行を, 2011/01/01]
[5, 増やしてみましょう, 2012/10/01]
[6, これぐらいかな?, 2010/09/10]
}}
*** ソース
#highlight(java){{
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class CsvRead {
public static void main(String[] args) {
List<String[]> list = readCsv(new File("CsvRead.csv"));
for (String[] ary : list) {
System.out.println(Arrays.toString(ary));
}
}
// CSVファイルを読み込んで、String配列のリストとして返します。
public static List<String[]> readCsv(File f) {
List<String[]> list = new ArrayList<String[]>();
try {
FileInputStream s = new FileInputStream(f);
// 文字コードを変える場合は、InputStreamReaderの第二引数を変更するとよいです。
InputStreamReader r = new InputStreamReader(s, "Shift_JIS");
BufferedReader br = new BufferedReader(r);
String line;
while((line = br.readLine()) != null) {
line = line.substring(1, line.length() - 1);
String[] ary = line.split("\",\"");
list.add(ary);
}
br.close();
r.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
}
}}
* 解説
- CSVファイルを一行ずつ読み込みます。
- 一行の先頭と末尾の「"」を取り除くため、substringを使っています。
#highlight(java){{line = line.substring(1, line.length() - 1);}}
|"hoge","moge","mage" | → | hoge","moge","mage |
- 先頭と末尾の「"」を取り除いた文字列を、「","」で分割すると、綺麗に各項目に別れます。
#highlight(java){{String[] ary = line.split("\",\"");}}
| hoge","moge","mage | → |hoge|moge|mage|