Javaの入出力について学ぶ

「Javaプログラミング技法」の第14回目の授業内容まとめになります。

※前回授業の内容はこちら

www.kato-eng.info

入出力とは

  • 入力 Input
    • ファイルやデバイス、ネットワークからデータを読み込むこと
  • 出力 Output
    • ファイルやデバイス、ネットワークにデータを書き込むこと

ストリーム

ストリームとはデータを1本の流れとして捉えたもの。

f:id:masayuki_kato:20170804001803p:plain

入力ではデータを流れとして読み込み、出力ではデータを流れとして書き込む。

f:id:masayuki_kato:20170804001949p:plain

Javaにはバイト(Byte)単位で入出力をするバイトストリームと、文字(char、2byte)単位で入出力する文字ストリームがある。

キーボードからの入力

キーボードからデータを入力するには下記の手順をとる。

  1. キーボードからデータを読み込むストリームをつくる
  2. ストリームからデータを読み込む
  3. 読み込んだデータを処理する
// KeyboardInputOutput.java
import java.io.*;
public class KeyboardInputOutput {
// readLine()を呼び出したときにIOExceptionが発生する可能性がある。
// この例外をmain内部でcatchしない代わりにmainそのものをthrows宣言している。
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// キーボードから文字データを1行まとめて読み込み、変数strに格納する
String str = br.readLine();
System.out.println(str);
}
}

InputStreamReader

InputStreamReaderは読み込んだバイト列のデータを指定した文字コードで文字に変換して出力するストリーム。

f:id:masayuki_kato:20170804215526p:plain

BufferedReader

BufferedReaderは文字をまとめて読み込むストリーム。

f:id:masayuki_kato:20170804215716p:plain

ファイルからの入力

ファイルからデータを入力するには下記の手順をとる。

  1. ファイルから読み込むストリームを作る
  2. ストリームからデータを読み込む
  3. ストリームを閉じる
  4. 読み込んだデータを処理する
// FileInput.java
import java.io.*;
public class FileInput {
public static void main(String[] args) {
BufferedReader br = null;
try {
// filename.txtから文字を読み込む、文字入力ストリームを作成する
br = new BufferedReader(new FileReader("filename.txt"));
// ファイルの内容を1行読み込む
String str = br.readLine();
System.out.println(str);
// ファイルを閉じる
br.close();
} catch (IOException e) {
// FileReaderはIOExceptionをthrowするのでcatchブロックを記述する
System.out.println("エラーが発生しました");
} finally {
try {
// tryブロックで例外が発生した際に、ファイルを閉じる処理
br.close();
} catch (IOException e) {
System.out.println("ファイルクローズ時にエラーが発生しました");
}
}
}
}

FileReader

FileReaderはファイルからデータを文字として読み込む入力ストリーム。

f:id:masayuki_kato:20170804221135p:plain

ファイルへの出力

ファイルへデータを書き込む手順は下記の通り。

  1. ファイルへ書き出すストリームを作る
  2. 書き込むデータを用意する
  3. ストリームへデータを書き込む
  4. ストリームを閉じる
// FileOutput.java
import java.io.*;
public class FileOutput {
public static void main(String[] args) {
PrintWriter pw = null;
try {
// target.txtへ文字を書き込む文字出力ストリームを作成する
pw = new PrintWriter(new BufferedWriter(new FileWriter("target.txt")));
// ファイルに文字を1行書き込む
pw.println("ABC");
// ファイルを閉じる
pw.close();
} catch (IOException e) {
System.out.println("ファイル出力エラー");
} finally {
// tryブロックで例外が発生した際にファイルを閉じる処理
pw.close();
}
}
}

FileWriter

FileWriterはファイルへデータを文字として書き込む出力ストリーム。

f:id:masayuki_kato:20170804224810p:plain

コメント

タイトルとURLをコピーしました