[JAVA] I/O 입출력 클래스의 종류

2019. 8. 7. 11:30 JAVA/Java IO

I/O 입출력 클래스의 종류


JAVA의 I/O는 java.io 패키지에 클래스가 정의되어 있는 경우가 대부분이다. (최근에는 nio 등이 나왔다.)


JAVA의 초기에는 입출력 클래스도 단순하였다. 단순히 바이트 단위의 입출력만 지원했지만, 현재는 계속적으로 확장되며 문자 단위의 입출력 뿐만 아니라 다양한 기능을 지원하는 클래스들이 생겨났다.


1. I/O 클래스의 이름과 의미


Stream으로 끝나는 클래스 : 바이트 단위로 입출력을 수행하는 클래스

Reader / Writer로 끝나는 클래스 : 캐릭터 단위로 입출력을 수행하는 클래스

File로 시작하는 클래스 : 하드디스크의 파일을 사용하는 클래스

Data로 시작하는 클래스 : 자바의 원시 자료형을 출력하기 위한 클래스

Buffered로 시작하는 클래스 : 시스템의 버퍼를 사용하는 클래스


1차 스트림 : 입/출력 통로를 직접 만드는 클래스

2차 스트림 : 기존의 통로를 이용하여 새로운 기능을 더하는 클래스



2. InputStream / OutputStream (바이트 입출력)



(1) InputStream


 클래스

설 명 

 Stream

InputStream 

 바이트 입력 스트림을 위한 추상 클래스 

2차 Stream 

FileInputStream

 파일에서 바이트를 읽어들여 바이트 스트림으로 변환 

1차 Stream 

PipedInputStream 

 PipedOutputStream에서 읽어들임 

1차 Stream

FilterInputStream 

 필터 적용(filtered) 바이트 입력을 위한 추상 클래스 

2차 Stream

LineNumberInputStream 

 바이트 입력시 라인 번호를 유지 (비추천)

2차 Stream

DataInputStream 

 기본 자료형 데이터를 바이트로 입력

2차 Stream

BufferedInputStream 

 바이트 버퍼 입력

2차 Stream

PushbackInputStream 

 읽어들인 바이트를 되돌림 (pushback) 

2차 Stream

ByteArrayInputStream 

 바이트 배열에서 읽어들임 

1차 Stream

SequenceInputStream

 t서로 다른 InputStream을 입력받은 순서대로 이어줌

2차 Stream

StringBufferInputStream 

 문자열에서 읽어들임 (비추천)

1차 Stream

ObjectInputStream 

 객체로 직렬화된 데이터를 역직렬화 하여 읽는다. 

2차 Stream


(2) OutputStream


 클래스

설 명 

 Stream

OutputStream 

 바이트 출력 스트림을 위한 추상 클래스 

2차 Stream 

FileOutputStream

 바이트 스트림을 바이트 파일로 변환 

1차 Stream 

PipedOutputStream 

 PipedOutputStream에 출력

1차 Stream

FilterOutputStream 

 필터 적용(filiterd) 바이트 출력을 위한 추상 클래스 

2차 Stream

DataOutputStream 

 바이트를 기본자료형으로 출력

2차 Stream

BufferedOutputStream 

 바이트 스트림에 버퍼 출력

2차 Stream

PrintStream

 Stream 값과 객체를 프린트

2차 Stream

ByteArrayOutputStream 

 바이트 스트림에 바이트 배열 출력

1차 Stream

ObjectputStream 

 데이터를 객체로 직렬화 하여 출력

2차 Stream



3. Reader / Writer (문자 입출력)


* 문자 입출력에는 문자 Encoding이 관여된다.


(1) Reader


 클래스

설 명 

 Stream

Reader

 바이트 입력 스트림을 위한 추상 클래스 

2차 Stream 

 BufferedReader

 문자 버퍼 입력, 라인 해석 

 2차 Stream

 LineNumberReader

 문자 입력시 라인 번호를 유지 

 2차 Stream

 CharArrayReader

 문자 배열에서 읽어들임 

 1차 Stream

 InputStreamReader

 바이트 스트림을 문자 스트림으로 변환 

 2차 Stream

 FileReader

 파일에서 바이트를 읽어들여 문자 스트림으로 변환 

 1차 Stream

 FilterReader

 필터 적용(filtered) 문자 입력을 위한 추상 클래스 

 2차 Stream

 PushbackReader

 읽어들인 문자를 되돌림 (pushback) 

 2차 Stream

 PipedReader

 PipedWriter에서 읽어들임 

 1차 Stream

 StringReader

 문자열에서 읽어들임 

 1차 Stream


(2) Writer


 클래스

설 명 

 Stream

Writer

 문자 출력 스트림을 위한 추상 클래스

 2차 Stream

BufferedWriter

 문자 스트림에 버퍼 출력, 줄바꿈 사용

 2차 Stream

CharArrayWriter 

 문자 스트림에 문자배열 출력 

 1차 Stream

OutputStreamWriter 

 문자 스트림을 바이트 스트림으로 변환 

 2차 Stream

FileWriter

 문자 스트림을 바이트 파일로 변환

 1차 Stream

FilterWriter 

 필터 적용(filtered) 문자 출력을 위한 추상 클래스 

 2차 Stream

PipedWriter 

 PipedReader에 출력 

 1차 Stream

StringWriter 

 문자열 출력 

 1차 Stream

PrintWriter 

 Writer 값과 객체를 프린트 

 2차 Stream



4. 그외의 java.io 클래스


클래스

설 명 

console 

명령행에서 쉽게 입력을 받고, 정형화된 출력을 명령행에 쉽게 출력할 수 있다. 

File

파일 객체를 생성한다. 

FileDescriptor 

물리적 파일에 대한 현재의 연결을 나타내기 위한 클래스

FilePermission 

파일 및 디렉토리에 액세스접 권한을 관리하는 클래스

RandomAccessFile 

랜덤 액세스 파일로부터 읽기와 쓰기가 동시에 이루어질 수 있다.

SerializablePermission

직렬화 가능 액세스 권한을 위한 클래스

StreamTokenizer

입력 스트림을 인수에 취해, 그것을 [토큰]에 구문 분석 해, 한 번에 1개 토큰을 읽는다. 



출처: https://hyeonstorage.tistory.com/250?category=578560 [개발이 하고 싶어요]