JavaのIOExceptionとは何か?現役エンジニアが解説【初心者向け】

初心者向けにJavaのIOExceptionについて解説しています。これは例外処理を扱うものになります。IOExceptionが生成される状況と処理の流れについて、サンプルコードの例を見ながら学びましょう。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

JavaのIOExceptionについて解説します。実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。

 

そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
 

なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

 

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

IOExceptionについて詳しく説明していくね!

大石ゆかり

お願いします!

 

java.ioパッケージとは

java.ioパッケージはシステム入出力に使うクラス、インターフェース等が提供されているパッケージです。ioパッケージを利用して、ファイルからのデータ読み込みや、ファイルへの書き出し等の入出力処理を実装することができます。

 

JavaのIOExceptionとは

java.io.IOExceptionは入出力処理中の例外を管理するクラスです。

JavaのIOExceptionが生成されるケース

入出力処理がなんらかの原因で失敗した場合、または割り込みが発生した場合に発生します。ファイルの入力処理の場合、ファイルが読み込めない状態になっていたり、アクセス権限がないファイルにアクセスしようとすると発生します。

コーディングでIOExceotionを発生させる場合は、入出力で使用するストリームをcloseしている状態で読み込みを行うと発生させることができます。下記サンプルではBufferedReaderクラスオブジェクトをcloseした後にreadLineメソッドが動作するタイミングで発生します。

 

[PR] Javaで挫折しない学習方法を動画で公開中

実際に書いてみよう

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

public class Sample {

  public static void main(String[] args) {

    BufferedReader bufferReader = null;
    FileReader fileReaderr = null;

    try {

      // 入力ファイル
      fileReaderr = new FileReader("inputFile.txt");
      bufferReader = new BufferedReader(fileReaderr);

      // 1行づつ読み込んで出力
      String line;
      while ((line = bufferReader.readLine()) != null) {

        System.out.println(line);

        //意図的にストリームを閉じ、IOExceptionを発生させる
        bufferReader.close();

      }

    } catch (IOException e) {

      System.out.println("IOExceptionが発生");

    } finally {

      try {
        if (bufferReader != null) {
          bufferReader.close();
        }

        if (fileReaderr != null) {
          fileReaderr.close();
        }

      } catch (IOException ex) {

        System.err.format("IOExceptionが発生");
      }
    }

  }

}

上記サンプルを実行すると

ファイルから一行読み込んだ内容をコンソール出力した後、

IOExceptionが発生

と出力します。

 

監修してくれたメンター

長屋雅美

独立系SIerで7年勤務後、現在はフリーのエンジニアとして自宅をオフィスとして活動しています。
JavaやC♯、shellscriptを用いた開発を主に担当し、TechAcademyではJavaコースを担当しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間でJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。