- Eclipse 3.5 完全攻略/宮本 信二
- ¥2,940
- Amazon.co.jp
開発の現場ではよくCSVファイルの読み書きを行わなければならない場面があります。
みなさんはどのようにしているでしょうか?例えば以下のようなコードを書くとCSVファイルを
読むことができますが・・・(汗
---------------------------------------------------------------
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
/**
* CSVファイルを読み込む簡単なサンプルプログラム
* @author たれ耳うさぎ
*
*/
public class CSVTest1 {
public static void main(String[] args) {
try{
BufferedReader buffer = null;
buffer = new BufferedReader(new FileReader("sample.csv"));
while(buffer.ready()){
String str = buffer.readLine();
String[] strList = str.split(",");
for (String string : strList) {
System.out.print(string);
}
System.out.println();
}
}catch(FileNotFoundException e){
System.out.println("ファイルがないです");
}catch(IOException e){
System.out.println("読み込みでエラーになりました");
}
}
}
---------------------------------------------------------------
sample.csv
列1,列2,列,列4
ネザーランドドワーフ,ホーランドロップ,レッキス,ミニウサギ
---------------------------------------------------------------
実行結果
列1列2列列4
ネザーランドドワーフホーランドロップレッキスミニウサギ
---------------------------------------------------------------
さて、いくつか問題点があります。
文字列の途中に 「,」 や「改行」 があった場合はどうでしょうか?
CSVファイルの仕様ではこれらの文字があった場合は、その文字列全体を「"」で
エスケープすることになっています。さらに
文字列中に「"」があった場合は直前にもう1つ「"」を置く
などいろいろルールがあります。
以上のような点を考慮し下記のようなファイルを読んだときに正しい実行結果を
得る方法はどうするか?
実は、このようなケースでサクっと問題を解決しようというのが当ブログのコンセプト
(大げさ)になります。
---------------------------------------------------------------
sample2.csv
"たれみ
みうさぎ","ホーランド,ロップ","ミニ
レッキス""!""アンドレッキス"
---------------------------------------------------------------
実行結果(予定)
たれみ
みうさぎホーランド,ロップミニ
レッキス"!"アンドレッキス
明日はこのようなファイルをサクっと読む方法について書きます