쨍쨍
[Java] 입출력스트림 본문
표준입력장치 ( 입력 관련 ) | Java | 표준 출력 장치 ( 출력 관련 ) |
System.in Scanner BufferedReader |
System.out System.err |
파일 ( 파일 입력 관련 ) | Java | 파일 ( 파일 출력 관련 ) |
FileInputStream BufferedReader FileReader |
FileOutputStream BufferedWriter FileWriter |
스트림
└ 데이터를 송수신하기 위한 통로의 개념으로서 입력 혹은 출력, 한쪽 방향으로만 진행. 즉, 연결통로이다.
스트림은 바이트 스트림과 문자 스트림으로 나뉜다.
바이트 스트림은 1바이트 단위로 처리하고, 문자 스트림은 2바이트 단위로 처리한다.
바이트스트림 | 문자스트림 |
FileInputStream FileOutputStream |
BufferedReader BufferedWriter FileReader FileWriter |
입력 바이트 스트림은 InputStream, 출력 바이트 스트림은 OutputStream이 붙는다.
입력 문자 스트림은 Reader, 출력 바이트 스트림은 Writer이 붙는다.
파일 입출력의 과정
① 파일 열기
읽기용: FileInputStream 변수명 = new FileInputStream("파일명");
└ 입력 스트림 InputStream은 스트림을 한 줄 씩 읽는다.
쓰기용: FileOutputStream 변수명 = new FileOutputStream("파일명);
└ 출력 스트림 OutputStream은 데이터를 내보내며 해당 공간을 비운다.
② 파일 처리
③ 파일 닫기
파일명.close();
[ 바이트 스트림 ]
InputStream 클래스
입력을 가져오는데 사용하는 추상 클래스로, 바이트 입력 스트림을 나타내는 모든 클래스의 슈퍼 클래스이다.
InputStream 클래스의 주요 자식 클래스
클래스 | 설명 |
FileInputStream | 파일에서 읽는 입력 스트림 |
ByteArrayInputStream | 바이트 배열을 차례대로 읽어들이는 입력 스트림 |
FilterInputStream | 필터를 이용한 입력 스트림 |
DataInputStream | 표준 데이터 유형을 읽는 방법을 포함하는 입력 스트림 |
BufferedInputStream | 버퍼링된 입력 스트림을 처리 |
PushBackInputStream | print(), println() 메서드를 포함하는 입력 스트림 |
PipedOutputStream | 주로 멀티스레스 처리에 사용되며 PipedOutputStream에 연결하여 PipedOutputStream에 기록되는 데이터 바이트를 제공 |
ObjectInputStream | 객체를 입력할 수 있는 보조 스트림 |
FileInputStream 클래스는 파일에서 이미지 데이터, 오디오, 동영상 등의 바이트 지향 데이터를 읽어오는데 사용되는 입력 스트림이다. FileInputStream 클래스를 통해 문자 스트림 데이터를 읽을 수 있지만, 문자 스트림을 읽을 때는 문자 스트림 유형인 FileReader 클래스를 사용하는 것이 좋다.
InputStream 클래스의 주요 메소드
메서드 | 설명 |
int read() | 입력 스트림에서 데이터의 다음 바이트를 읽는다. 파일 끝에서 -1을 반환한다. |
int read(byte[] b) | 입력 스트림에서 몇 바이트를 읽어 버퍼 배열 b에 저장한다. |
int available() | 입력 스트림에서 읽을 수 있는 바이트 수의 추정치를 반환한다. |
void close() | 입력 스트림을 닫는다. |
OutputStream 클래스
출력을 하는 추상 클래스로, 바이트 출력 스트림을 나타내는 모든 클래스의 슈퍼 클래스이다.
OutputStream 클래스의 주요 자식 클래스
클래스 | 설명 |
FileOutputStream | 파일에 쓰는 출력 스트림 |
ByteArrayOutputStream | 바이트 배열에 기록되는 출력 스트림 |
FilterOutputStream | 출력 스트림을 필터링하는 모든 클래스의 상위 클래스 |
DataOutputStream | 표준 데이터 유형을 작성하는 방법을 포함하는 출력 스트림 |
BufferedOutputStream | 버퍼링된 출력 스트림에 사용 |
PrintStream | print(), println() 메서드를 포함하는 출력 스트림 |
PipedOutputStream | 주로 멀티스레스 처리에 사용되며 PipedInputStream에 연결하여 통신 파이프를 생성 |
ObjectOutputStream | 객체를 출력할 수 있는 보조 스트림 |
FileOutputStream 클래스는 파일에 데이터를 쓰는데 사용되는 출력 스트림이다. 파일에 기본값을 쓰는 경우 이 클래스를 사용한다. FileOutputStream 클래스를 통해 바이트 지향 데이터와 문자 지향 데이터를 모두 작성할 수 있지만 문자 지향 데이터의 경우 FileWirter 클래스를 사용하는 것이 더 좋다.
OutputStream 클래스의 주요 메서드
메서드 | 설명 |
void write(int) | 출력 스트림에 바이트를 쓴다. |
void write(byte[] b) | 출력 스트림에 바이트 배열을 쓴다. |
void flush() | 출력 스트림에 저장된 버퍼의 내용을 쓰고 버퍼를 비운다. |
void close() | 출력 스트림을 닫는다. |
[ 문자 스트림 ]
Reader 클래스
문자 스트림을 읽기 위한 추상 클래스, 서브클래스가 구현해야 하는 추상 메서드는 read(), close()이다.
Reader 클래스의 주요 자식 클래스
클래스 | 설명 |
BufferedReader | 버퍼링된 문자 입력 스트림을 처리 |
CharArrayReader | 문자 입력 스트림으로 사용할 수 있는 문자 버퍼를 구현 |
FilerReader | 필터링된 문자 스트림을 읽기 위한 추상 클래스 |
InputStreamReader | 바이트를 문자로 변환하는 입력 스트림 |
FileReader | 파일에 서 읽는 문자 입력 스트림 |
PipedReader | 파이프된 문자 입력 스트림을 처리 |
StringReader | 소스가 문자열인 문자 스트림 |
Writer 클래스
문자 스트림에 쓰기 위한 추상 클래스로, 서브클래스가 구현해야 하는 추상 메서드는 write(), flush(), close()이다.
Writer 클래스의 주요 자식 클래스
클래스 | 설명 |
BufferedWriter | 버퍼링된 출력 스트림을 처리 |
CharArrayWriter | Writer로 사용할 수 있는 문자 버퍼를 구현 |
FilerWriter | 필터링된 문자 스트림을 작성하기 위한 추상 클래스 |
OutputStreamWriter | 문자를 바이트로 변환하는 출력 스트림 |
FileWriter | 파일에 쓰는 출력 스트림 |
PipedWriter | 파이프된 문자 출력 스트림을 처리 |
StringWriter | 문자열을 구성하는데 사용할 수 있는 문자열 버퍼에서 출력을 수집하는 문자 스트림 |
PrintWriter | 식이 지정된 표현을 텍스트 출력 스트림에 출력 |
'프로그래밍 코드 > Java' 카테고리의 다른 글
[JAVA] 소켓통신 채팅프로그램 (0) | 2023.04.03 |
---|