Java CSVファイルの読み書き(FileReader/FileWriter)

JavaのCSVファイルの読み込みと書き込みを行うサンプルです。

サンプル CSVファイルを読み込む
CSVファイルに書き込む

CSVファイルを読み込む

public FileReader(File file) throws FileNotFoundException

CSVファイルの文字コードはshift-jisです。

package test1;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Test1 {
	public static void main(String[] args) {
		String fileName = "D:\\Test1\\test1.csv"

		File file = new File(fileName);
		if (!file.exists()) {
			System.out.print("ファイルが存在しません");
			return;
		}

		try (FileReader fileReader = new FileReader(fileName); 
			 BufferedReader bufferedReader = new BufferedReader(fileReader)) {
			String line;
			while ((line = bufferedReader.readLine()) != null) {
				String[] arrayStr = line.split(",");

				for (String str : arrayStr) {
					System.out.println(str);
				}
			}
		} catch (IOException e) {
			System.out.println(e);
		}
	}
}

10行目は、ファイルとpathです。円マークが2つありますが1つめはエスケープをしています。
円記号(バックスラッシュ)を文字として表示します。
13行目は、existsメソッドでファイルの存在確認をしています。
ビックリマークは否定を意味します。→ファイルがなかったら14行目以降を実行します。
18行目は、try-with-resources文です。
tryのブロックを抜けるときにリソース(FileReaderとBufferedReader)がcloseされます。
21行目のreadLine()は、文字が終了するとnullを返して変数lineにセットします。
変数lineがnullではない間は、while文で処理を繰り返します。

 

CSVファイルに書き込む

public FileWriter(File file) throws IOException
package test1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class Test1 {
	public static void main(String[] args) {
		String fileName = "D:\\Test1\\test1.csv";

		File file = new File(fileName);
		if (!file.exists()) {
			System.out.print("ファイルが存在しません");
			return;
		}

		List<String> textList = new ArrayList<>();
		textList.add("赤");
		textList.add("黄");
		textList.add("青");
		String csvData = String.join(",", textList);
		
		try (FileWriter fileWriter = new FileWriter(file)) {
			for (int i = 0; i < 3; i++) {
				fileWriter.write(csvData);
				fileWriter.write("\r\n"); //改行
			}
		} catch (IOException e) {
			System.out.println(e);
		}finally {
			System.out.println("CSV書き込みが終了しました");
		}
	}
}

15行目は、ファイルとpathです。円マークが2つありますが1つめはエスケープをしています。
円記号(バックスラッシュ)を文字として表示します。
18行目は、existsメソッドでファイルの存在確認をしています。
ビックリマークは否定を意味します。→ファイルがなかったら19行目以降を実行します。
27行目のjoinメソッドは、1つめの引数を区切り文字としてリストの要素をつなげます。
29行目は、try-with-resources文です。
tryのブロックを抜けるときにリソース(fileWriter)がcloseされます。
31行目のfileWriter.write()で文字をファイルに書き込みます。
32行目は、改行を行います。FileWriterで改行をする場合は"\r\n"を使用します(Windows)。

https://docs.oracle.com/javase/jp/8/docs/api/java/io/FileWriter.html

関連の記事

Java テキストファイルの読み書き(NIO.2のFiles)

△上に戻る