Java.IO.Io예외

Sheeraz Gul 2023년10월12일
Java.IO.Io예외

이 튜토리얼은 Java의 java.io.ioexception을 보여줍니다.

Java의 java.io.IOException

IO예외는 Java에서 가장 일반적인 예외입니다. 이 예외의 가장 일반적인 이유는 다음과 같습니다.

  1. 파일을 읽었지만 해당 파일이 존재하지 않습니다.
  2. 파일을 읽고 있지만 권한이 없습니다.
  3. 파일을 쓰고 있지만 디스크 공간이 없습니다.
  4. 스트림을 읽을 때 해당 스트림이 다른 프로세스에 의해 닫힙니다.
  5. 네트워크 파일을 읽을 때 해당 네트워크가 연결되어 있지 않습니다.

Java.IO.IOexception은 시스템 입력 및 출력 데이터 스트림과 직렬화에 대한 예외를 제공합니다.

Java의 IO 예외에 대한 다른 많은 이유도 있습니다. 아래 표는 Java에서 예외의 유형 또는 하위 클래스를 보여줍니다.

상호 작용 설명
InvalidClassException 이는 직렬화 런타임이 유효하지 않은 클래스를 감지할 때 발생합니다.
InvalidObjectException 이는 직렬화 개체가 유효성 검사에 실패했음을 나타냅니다.
NotActiveException 이는 직렬화 또는 역직렬화가 활성 상태가 아님을 나타냅니다.
NotSerializableException 이는 인스턴스에 직렬화 가능 인터페이스가 필요함을 나타냅니다.
ObjectStreamException 이것은 모든 개체 스트림 클래스에 대한 슈퍼 클래스를 나타냅니다.
CharConversionException 문자 변환 예외에 사용됩니다.
EOF예외 이는 입력하는 동안 스트림의 파일 끝에 도달했음을 나타냅니다.
FileNotFoundException 액세스하려는 파일이 존재하지 않음을 나타냅니다.
InterruptedIOException 이는 입출력 작업이 중단되었음을 나타냅니다.
OptionalDataException 이것은 읽지 않은 기본 데이터 또는 스트림의 직렬화 가능 개체에 속하는 데이터의 끝으로 인해 개체 읽기 실패를 나타냅니다.
StreamCorruptedException 이는 개체 스트림에서 읽은 제어 정보가 내부 일관성 검사를 위반했음을 나타냅니다.
SyncFailedException 이는 동기화 작업이 실패했음을 나타냅니다.
UnsupportedEncodingException 이는 주어진 문자 인코딩이 지원되지 않음을 나타냅니다.
UTFDataFormatException 이는 잘못된 형식의 UTF-8 데이터가 입력 스트림에서 읽혔거나 데이터 입력 인터페이스를 구현하는 모든 클래스에서 이 데이터를 읽었음을 나타냅니다.
WriteAbortedException 이는 쓰기 작업 중에 ObjectStreamException이 발생했음을 나타냅니다.

위의 예외는 기본 IO 예외의 하위 클래스 유형입니다. Java에서 IOException을 발생시키는 예제를 시도해 보겠습니다.

package delftstack;

import java.io.FileInputStream;
import java.io.IOException;

public class Example {
  public static void main(String[] args) throws Exception {
    FileInputStream File_Input_Stream = new FileInputStream("Demofile.txt");
    System.out.println("Check if the file is there. ");
  }
}

위의 코드는 액세스하는 파일이 존재하지 않기 때문에 IO FileNotFoundException을 발생시킵니다. 출력 참조:

Exception in thread "main" java.io.FileNotFoundException: Demofile.txt (The system cannot find the file specified)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
    at delftstack.Example.main(Example.java:8)

이러한 예외를 처리하기 위해 try-catch 블록을 사용하여 JVM이 코드 충돌을 방지합니다. 솔루션 보기:

package delftstack;

import java.io.FileInputStream;
import java.io.IOException;

public class Example {
  public static void main(String[] args) throws Exception {
    try {
      FileInputStream File_Input_Stream = new FileInputStream("Demofile.txt");
      System.out.println("Check if the file is there. ");
    } catch (IOException e) {
      // e.printStackTrace(); or
      System.out.println(e.getMessage());
    }
  }
}

이제 위의 코드는 동일한 오류 정보를 인쇄하지만 코드 충돌은 발생하지 않습니다. 출력 참조:

Demofile.txt (The system cannot find the file specified)

Java에서 파일 끝 예외(EOFException)를 발생시키는 또 다른 예를 살펴보겠습니다.

package delftstack;

import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class Example {
  public void DemoCheck() {
    File file = new File("delftstack.txt");
    DataInputStream Data_Input_Stream = null;
    try {
      Data_Input_Stream = new DataInputStream(new FileInputStream(file));
      while (true) {
        Data_Input_Stream.readInt();
      }
    } catch (EOFException E_O_F_Exception) {
      E_O_F_Exception.printStackTrace();
    } catch (IOException I_O_Exception) {
      I_O_Exception.printStackTrace();
    } finally {
      try {
        if (Data_Input_Stream != null) {
          Data_Input_Stream.close();
        }
      } catch (IOException I_O_Exception) {
        I_O_Exception.printStackTrace();
      }
    }
  }
  public static void main(String[] args) {
    Example DemoExample = new Example();
    DemoExample.DemoCheck();
  }
}

파일 읽기를 시도하고 파일의 끝에 도달했기 때문에 코드에서 EOFException이 발생합니다. 출력 참조:

java.io.EOFException
    at java.base/java.io.DataInputStream.readInt(DataInputStream.java:398)
    at delftstack.Example.DemoCheck(Example.java:16)
    at delftstack.Example.main(Example.java:39)
작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - Java Error