[JAVA] I/O 입출력 클래스의 종류
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 [개발이 하고 싶어요]
'JAVA > Java IO' 카테고리의 다른 글
[JAVA] Serializable 과 transient (0) | 2019.08.07 |
---|---|
[JAVA] serialVersionUID 이란? Warning 해결하기 (0) | 2019.08.07 |
[JAVA] 객체 직렬화 ObjectInputStream / ObjectOutputStream (0) | 2019.08.07 |
[JAVA] I/O Char 와 Encoding (0) | 2019.08.07 |
[JAVA] 문자 Stream : BufferedReader / BufferedWriter (파일 복사 예제) (0) | 2019.08.07 |
[JAVA] 문자 Stream : FileReader / FileWriter (0) | 2019.08.07 |
[JAVA] 문자 Stream : InputStreamReader / OutputStreamWriter (0) | 2019.08.07 |
[JAVA] 문자 Stream : Reader / Writer (0) | 2019.08.07 |