JavaのIOExceptionエラーとその対処方法
Javaプログラミングではファイルの読み書きやネットワーク通信などを行う際、IOExceptionが発生することがあります。
この記事では、具体的なソースコードを通じてIOExceptionが発生する5つの典型的なケースとそれぞれの対処方法を解説します。
Javaのエラー一覧はコチラ
-
【Java】よく発生するエラー一覧12選 エラーの発生事例と対処方法をみてみよう!
Javaのエラーとその対処方法 この記事では、Javaでよく発生するエラーと各エラーが起きる事例と、その対処方法を紹介していきます。 下記のエラーについてみていきます! エラーリスト NullPoin ...
続きを見る
1. ファイルが存在しない場合
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { try { FileReader fr = new FileReader("nonexistent.txt"); } catch (IOException e) { e.printStackTrace(); } } } |
出力結果
java.io.FileNotFoundException: nonexistent.txt (No such file or directory)
この問題の解決策は以下の2つがあります。
1. ファイルが実際に存在することを確認する
2. ファイルが存在しない場合の処理を実装する
対処後のソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.io.File; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { File file = new File("nonexistent.txt"); if (file.exists() { try { FileReader fr = new FileReader(file); // ファイルの読み込み処理 } catch (IOException e) { e.printStackTrace(); } } else { System.out.println("The file does not exist."); } } } |
出力結果
The file does not exist.
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版
2. ファイルに対する権限がない場合
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { try { FileReader fr = new FileReader("no_permission.txt"); } catch (IOException e) { e.printStackTrace(); } } } |
出力結果
java.io.FileNotFoundException: no_permission.txt (Permission denied)
この問題の解決策は以下の2つがあります。
1. ファイルの権限を確認し、必要な権限を持つようにする
2. 権限がない場合の処理を実装する
対処後のソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.io.File; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { File file =new File("no_permission.txt"); if (file.canRead()) { try { FileReader fr = new FileReader(file); // ファイルの読み込み処理 } catch (IOException e) { e.printStackTrace(); } } else { System.out.println("The file cannot be read."); } } } |
出力結果
The file cannot be read.
3. ストリームが既に閉じられている場合
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) { br.close(); br.readLine(); } catch (IOException e) { e.printStackTrace(); } } } |
出力結果
java.io.IOException: Stream closed
この問題の解決策は以下の通りです。
ストリームを閉じる前に必要な操作を完了する
ストリームが閉じられているかどうかを確認するロジックを追加する
対処後のソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Main { public static void main(String[] args) { try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) { String line = br.readLine(); while (line != null) { System.out.println(line); line = br.readLine(); } } catch (IOException e) { e.printStackTrace(); } } } |
出力結果
// ファイルの内容がここに表示されます
4. ファイル書き込みエラー
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import java.io.FileWriter; import java.io.IOException; public class Main { public static void main(String[] args) { try { FileWriter writer = new FileWriter("readonly.txt"); writer.write("Some text"); writer.close(); } catch (IOException e) { e.printStackTrace(); } } } |
出力結果
java.io.IOException: readonly.txt (Access is denied)
対処方法:
ファイルの書き込み権限を確認し、必要に応じて変更する。
書き込み可能なファイルに対して操作を行う。
5. 入出力操作中の中断
エラーが発生するソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
import java.io.FileInputStream; import java.io.IOException; import java.io.InterruptedIOException; public class Main { public static void main(String[] args) { try { FileInputStream stream = new FileInputStream("largefile.txt"); // ファイルの読み込み処理 } catch (InterruptedIOException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } |
出力結果
java.io.InterruptedIOException: Operation interrupted
対処方法:
中断されないように適切な処理を行う。
中断を適切に処理するロジックを実装する。
まとめ
この記事では、JavaのIOExceptionとその対処法について説明しました。エラーを解決するためには、エラーメッセージをしっかりと読み、何が問題であるのかを理解することが重要です。上記の例では、ファイルが存在しない場合や、読み取り権限がない場合について取り上げましたが、他にも様々な原因でIOExceptionが発生します。
常に正しいエラーハンドリングを心がけ、エラーが発生した際には適切に対応できるようにしましょう。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
Javaのエラー一覧はコチラ
-
【Java】よく発生するエラー一覧12選 エラーの発生事例と対処方法をみてみよう!
Javaのエラーとその対処方法 この記事では、Javaでよく発生するエラーと各エラーが起きる事例と、その対処方法を紹介していきます。 下記のエラーについてみていきます! エラーリスト NullPoin ...
続きを見る