Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

쨍쨍

[Java] 입출력스트림 본문

프로그래밍 코드/Java

[Java] 입출력스트림

이선선 2023. 5. 23. 00:54

 

표준입력장치 ( 입력 관련 ) 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