본문 바로가기
백엔드/Java

자바 IO의 동작 방식과 사용법

by 개발자K씨 2024. 1. 4.

자바의 Input/Output(IO) 시스템은 데이터의 읽기와 쓰기를 처리하는 핵심 기능을 제공합니다.

이는 파일, 네트워크, 메모리 등 다양한 데이터 소스와 목적지에서 데이터를 읽고 쓰기 위한 다양한 API를 포함합니다.

자바 IO는 크게 스트림 기반 IO와 채널 기반 NIO로 나뉩니다.

스트림 기반 IO

스트림 기반 IO는 데이터를 연속적인 스트림으로 처리합니다.

이는 'java.io' 패키지에 정의되어 있으며, 기본적으로 두가지 타입의 스트림이 있습니다.

 

  • InputStream / OutputStream: 바이트 기반 스트림으로, 바이트 단위의 데이터를 처리합니다.
  • Reader / Writer: 문자 기반 스트림으로, 문자 데이터를 처리합니다.

자바 IO의 핵심 클래스

  • FileInputStream / FileOuputStream: 파일로부터 바이트를 읽고 쓰는데 사용됩니다.
  • BufferedReader / BufferedWriter: 데이터를 버퍼에 저장하여 효율적으로 읽고 쓰게 합니다.
  • DataInputStream / DataOuputStream: 기본 타입 데이터를 읽고 쓰는데 사용됩니다.
  • ObjectInputStream / ObjectOuputStream: 객체 직렬화를 통해 객체를 스트림으로 변환하여 읽고 쓰는데 사용됩니다.

자바 IO 사용법

 

파일 읽기

try (FileInputStream fis = new FileInputStream("example.txt")) {
	int content;
    while ((content = fis.read()) != -1) {
    	// 데이터 처리 로직
    }
} catch (IOException e) {
	e.printStackTrace();
}

 

파일 쓰기

try (FileOutputStream fos = new FileOutputStream("example.txt")) {
	String content = "Hello, Java!";
    fos.write(content.getBytes());
} catch (IOException e) {
	e.printStackTrace();
}

 

자바 NIO

자바 NIO는 Non-blocking IO를 제공하며, 'java.nio' 패지키에 정의되어 있습니다.

NIO는 채널과 버퍼를 사용하여 IO를 더 효율적으로 관리합니다.

NIO는 멀티플렉싱, 파일 시스템 접근, 문자셋 변환 등 고급 기능을 제공합니다.

 

결론

자바 IO는 데이터를 읽고 쓰는데 필수적인 부분입니다.

기본적인 파일 입출력부터 객체 직렬화, NIO를 활용한 비동기 IO까지 다양한 기능을 제공합니다.

애플리케이션의 필요에 따라 적절한 IO 클래스와 메서드를 선택하여 사용하는 것이 중요합니다.

'백엔드 > Java' 카테고리의 다른 글

JPA의 fetch 전략  (0) 2024.01.05
자바 NIO의 동작 방식과 사용법  (1) 2024.01.04
ExecutorService  (0) 2023.12.27
[lombok]@Data 주의사항  (0) 2023.12.26
lombok  (0) 2023.12.26