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

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

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

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

 

なお本記事は、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では、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。