[Java] I/O - 자바의 입출력

류넹·2023년 11월 26일
1

Java

목록 보기
17/20

# 목적

: 학습을 위한 자바의 I/O(입출력) 클래스 간단 요약




I/O 란?

: java.io 패키지의 클래스로, 입력과 출력(Input/Output)을 의미함
애플리케이션에서 리소스를 읽어오거나, 애플리케이션의 데이터를 목적지로 출력하는 작업을 수행하는 클래스




I/O의 주요 클래스 대분류

클래스입출력 단위입력/출력
InputStream1byte입력
OutputStream1byte출력
Reader1문자(Character)입력
Writer1문자(Character)출력




Stream에 따른 I/O 분류

1. ByteStream

: 1byte씩 읽고 출력하는 스트림

(1) InputStream 클래스

# InputStream의 주요 메소드

1) int read()
> 한 바이트씩 읽어서 반환
> 스트림의 끝에 도달하면 -1을 반환

2) int read(byte[] buf)
> 지정된 byte[]배열에 한 바이트씩 저장 -> 반환되는 값은 배열에 저장된 데이터의 갯수
> 스트림의 끝에 도달하면 -1을 반환

3) void close()
> 애플리케이션이 사용했던 시스템의 입출력 자원을 반환

# InputStream의 주요 클래스

1) FileInputStream
> 지정된 파일의 데이터를 1바이트씩 읽어옴

2) BufferedInputStream
> 다른 InputStream과 연결해서 사용하는 보조스트림
> 읽기 성능 향상

3) DataInputStream
> DataOutputStream으로 출력한 내용을 읽어오는 스트림
> readInt(), readLong(), readDouble(), readUTF()와 같은 메소드를 사용해서 타입 그대로 읽어오기 가능

4) ObjectInputStream
> ObjectOutputStream으로 직렬화된 객체를 역직렬화해서 객체로 복원
> readObject() 메소드를 사용해서 직렬화된 객체를 스트림으로 읽어서 역직렬화 시킴




(2) OutputStream 클래스

# OutputStream의 주요 메소드

1) void write(int data)
> 한 바이트씩 출력

2) void write(byte[] buf)
> 지정된 byte[]배열에 저장된 데이터 출력

3) void write(byte[] buf, int offset, int length)
> 지정된 byte[]배열에 저장된 데이터를 offset위치부터 length만큼 출력

4) void flush()
> 스트림의 내부저장소가 채워지지 않아도 강제로 목적지로 출력시킴

5) void close()
> 애플리케이션이 사용했던 시스템의 입출력 자원을 반환


# OutputStream의 주요 클래스

1) FileOutputStream
> 파일로 1byte씩 출력하는 스트림

2) BufferedOutputStream
> 연결된 InputStream의 쓰기 성능을 향상시키는 스트림

3) DataOutputStream
> 연결된 InputStream으로 값을 기본자료형이나 String형태로 출력하는 스트림

4) ObjectOutputStream
> 객체를 직렬화해서 연결된 스트림으로 출력하는 스트림

5) PrintStream
> 출력 전용 스트림





2. CharacterStream

: 1문자씩 읽고 출력하는 텍스트 전용 스트림, 파일을 직접 쓰고 싶을 때만 사용

(1) Reader 클래스

# Reader의 주요 메소드

1) int read()
> 한글자씩 읽어서 반환

2) int read(char[] buf)
> 지정된 char[]배열에 한글자씩 저장하고, 저장된 문자갯수를 반환

3) void close()
> 애플리케이션이 사용했던 시스템의 입출력 자원을 반환


# Reader의 주요 클래스

1) FileReader
> 텍스트 파일에서 한글자씩 읽어오는 스트림

2) BufferedReader
> 연결된 캐릭터스트림으로부터 한줄씩 읽어오는 스트림

3) InputStreamReader
> InputStream과 Reader를 연결하는 스트림




(2) Writer 클래스

# Writer의 주요 메소드

1) void write(int value)
> 한글자씩 출력

2) void wrtie(char[] buf)
> 지정된 char[]배열에 저장된 문자를 전부 출력

3) void wrtie(char[] buf, int offset, int length)
> 지정된 char[]배열에 저장된 데이터를 offset위치부터 length만큼 출력

4) void write(String text)
> 지정된 문자열 출력

5) void flush()
> 스트림의 내부저장소가 채워지지 않아도 강제로 목적지로 출력시킴

6) void close()
> 애플리케이션이 사용했던 시스템의 입출력 자원을 반환


# Writer의 주요 클래스

1) FileWriter
> 파일에 텍스트를 출력

2) BufferedWriter
> 연결된 Reader의 출력성능을 향상시킴

3) OutputStreamWriter
> OutputStream과 Writer를 연결하는 스트림

4) PrintWriter
> 출력전용 스트림
> 개행문자를 자동으로 추가





> 주로 사용되는 클래스

  • 일반적인 파일의 복사 및 저장 작업
    : FileInputStream, FileOutputStream 사용

  • 텍스트 파일의 처리
    : BufferedReader, FileReader, PrintWriter 사용

profile
학습용 커스터마이징 간단 개발자 사전

0개의 댓글