talosのプログラミング教室

Java Gold合格への道 ~Java I/O・ファイルの読み書き~

スポンサーリンク

こんにちは。たろすです。

今回はJava I/Oのファイルの読み書きについて説明します。

ファイルの読み書き方法

1文字ずつ

バイナリファイルの読み書きにはFileInputStreamとFileOutputStream、テキストファイルの読み書きにはFileReaderとFileWriterを使います。

String filePath = "files/text.txt";

// ファイル書き込み
try (FileWriter writer = new FileWriter(filePath)) {
	writer.write('a');
} catch (IOException e) {
	e.printStackTrace();
}

// ファイル読み取り
try (FileReader reader = new FileReader(filePath)) {
	int c;
	while ((c = reader.read()) != -1) {
		System.out.print((char) c);
	}
} catch (FileNotFoundException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
}
a

ファイルの書き込みにはwriteメソッドを使います。

一方で読み込みにはreadメソッドを使います。

readメソッドではファイルの終端に達すると-1を返すため、-1になるまでwhileループを回します。

戻り値はintなのでcharにキャストして出力しています。

1行ずつ

BufferedReaderとBufferedWriterを使います。

String filePath = "files/text.txt";

try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) {
	bw.write("abc");
	bw.newLine();
	bw.write("def");
} catch (IOException e) {
	e.printStackTrace();
}

try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
	String line;
	while ((line = br.readLine()) != null) {
		System.out.println(line);
	}
} catch (FileNotFoundException e) {
	e.printStackTrace();
} catch (IOException e) {
	e.printStackTrace();
}
abc
def

書き込みにはwriteメソッド、読み込みにはreadLineメソッドを使います。

newLineメソッドはプラットフォームあわせた改行を入れることができます。

readLineメソッドは終端まで達するとnullを返すので、nullになるまでwhileループを回しています。

おわりに

今回はJava I/Oのファイルの読み書きについて説明しました。