java.io パッケージ

java.ioパッケージは、データストリームやシリアライゼーション、ファイルシステムを通じたシステム入出力を提供します。

目次

  1. クラス
    1. BufferedReader
    2. File
    3. FileInputStream
    4. FileOutputStream
    5. OutputStream
    6. Serializable
    7. Writer
  2. 例外
    1. FileNotFoundException
    2. IOException

クラス

java.ioパッケージには次に示すクラスがある。

java.ioパッケージのクラス
Class Description
OutputStream バイと出力ストリームを表現する全てのクラスのスーパークラス
Writer 文字ストリームに書き込むための抽象クラス

キーボードから文字列を入力する

キーボードから文字列を入力するJavaソースコードの例を次に示す。

import java.io.*;

class KeyboardInput {
  public static void main(String arg[]) {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("文字列を入力してください: ");
    try {
      String line = br.readLine();
      System.out.println(line);
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

キーボードから文字列を入力するサンプルコードの実行例を次に示す。

$ java KeyboardInput
文字列を入力してください: Java
Java
$

ファイルからデータを入力する

ファイルからデータを読み込み、他のファイルへ書き出す(つまりファイルコピー)例を次に示す。

まずは、FileInputStreamからバイト列を読みだして、FileOutputStreamに書き込む例。

import java.io.*;

class FileCopy1 {
  static final int BUFSIZE = 80;

  public static void main(String arg[]) {
    try {
      FileInputStream fis = new FileInputStream(arg[0]);
      FileOutputStream fos = new FileOutputStream(arg[1]);
      byte buff[] = new byte[BUFSIZE];
      int len;

      while ((len = fis.read(buff, 0, BUFSIZE)) != -1) {
        fos.write(buff, 0, len);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

次に、FileInputStreamから1文字づつ読みだして、FileOutputStreamに1文字づつ書き込む例。

import java.io.*;

class FileCopy2 {
  public static void main(String arg[]) {
    try {
      FileInputStream fis = new FileInputStream(arg[0]);
      FileOutputStream fos = new FileOutputStream(arg[1]);
      int ch;

      while ((ch = fis.read()) != -1) {
        fos.write(ch);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

最後に、BufferedReaderから1行読みだして、PrintStreamに1行書き出す例。

import java.io.*;

class FileCopy3 {
  public static void main(String arg[]) {
    try {
      FileInputStream fis = new FileInputStream(arg[0]);
      BufferedReader br = new BufferedReader(new InputStreamReader(fis));
      FileOutputStream fos = new FileOutputStream(arg[1]);
      PrintStream ps = new PrintStream(new BufferedOutputStream(fos));
      String line;

      while ((line = br.readLine()) != null) {
        ps.println(line);
      }
      ps.flush();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

例外

java.io.FileNotFoundException

public class FileNotFoundException extends IOException

指定されたパス名で示されるファイルが開けなかったことを通知する。

java.io.FileNotFoundException の継承図を以下に示す。

java.io.FileNotFoundException
Figure 1. java.io.FileNotFoundException

java.io.FileNotFoundException クラスは、以下に示すインタフェースを実装している。

java.io.FileNotFoundException クラスは、以下に示すメソッドを java.lang.Throwable クラスから継承している。

java.io.FileNotFoundException クラスは、以下に示すメソッドを java.lang.Object クラスから継承している。

java.io.IOException

public class IOException extends Exception

なんらかの入出力例外の発生を通知するシグナルを発生させる。このクラスは、入出力処理の失敗、または割り込みの発生によって生成される例外の汎用クラスである。

java.io.FileNotFoundException の継承図を以下に示す。

java.io.IOException クラスは、以下に示すインタフェースを実装している。

java.io.IOException クラスは、以下に示すメソッドを java.lang.Throwable クラスから継承している。

java.io.IOException クラスは、以下に示すメソッドを java.lang.Object クラスから継承している。