HOWTO · Java
Java.IO.Io예외
이 자습서는 Java의 java.io.io예외를 보여줍니다.
이 페이지의 내용
이 튜토리얼은 Java의 java.io.ioexception을 보여줍니다.
Java의 java.io.IOException
IO예외는 Java에서 가장 일반적인 예외입니다. 이 예외의 가장 일반적인 이유는 다음과 같습니다.
- 파일을 읽었지만 해당 파일이 존재하지 않습니다.
- 파일을 읽고 있지만 권한이 없습니다.
- 파일을 쓰고 있지만 디스크 공간이 없습니다.
- 스트림을 읽을 때 해당 스트림이 다른 프로세스에 의해 닫힙니다.
- 네트워크 파일을 읽을 때 해당 네트워크가 연결되어 있지 않습니다.
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)