[국비학원 기록/자바] I/O 입출력, 입력 스트림, 출력 스트림, 기반 스트림, 보조 스트림
my code archive
article thumbnail
반응형

1. 자바의 입출력을 위한 I/O 스트림

1)입출력 스트림

-네트워크에서 자료의 흐름이 물의 흐름과 같다는 비유에서 유래됨.

-자바는 다양한 입출력 장치에 독립적으로 일관성있는 입출력을 '입출력 스트림'을 통해 제공한다.

-입출력이 구현되는 곳 : 파일 디스크, 키보드, 마우스, 네트워크 등 모든 자료가 입력되고 출력되는 곳.

 

2)입출력 스트림 구분

대상 기준 : 입력 스트림 / 출력 스트림
자료의 종류 : 바이트 스트림 / 문자 스트림

기능 : 기반 스트림 / 보조 스트림

 

2. 입력 스트림과 출력 스트림

1)입력 스트림: 대상으로부터 자료를 읽어들이는 스트림

2)출력 스트림 : 대상으로 자료를 출력하는 스트림

3)스트림 종류

-입스 : FileInputStream, FileReader, BufferedInputStream, BufferedReader...

-출스 : FileOutputStream, FileWriter, BufferedOutputStrea, BufferedWriter...

 

3. 바이트 스트림과 문자 스트림

1)바이트 단위 스트림 : 동영상, 음악 파일, 실행 파일 등의 자료를 읽고 쓸 때 사용.

2)문자 단위 스트림 : 바이트 단위로 자료를 처리하면 문자는 깨진다.

                           인코딩에 맞게 2바이트 이상으로 처리하도록 구현된 스트림

3)스트림 종류

 -바스 : FileInputStream, FileOutputStream, BufferedInputStream, BufferedOutputStrea...
 -문스 : FileReader, FileWriter, BufferedReader, BufferedWriter...

 

4. 기반 스트림과 보조 스트림

1)기반 스트림 : 대상에 직접 자료를 읽고 쓰는 기능의 스트림

2)보조 스트림 :직접 읽고 쓰는 기능은 없어 추가적인 기능을 더해주는 스트림

3)보조 스트림은 직접 읽고 쓰는 기능은 없으므로 항상 기반 스트림이나 또다른 보조 스트림을 생성자의 매개변수로 포함.

4)스트림 종류

-기스 : FileInputStream, FileOutputStream, FileReader, FileWriter...
-보스 : InputStreamReader, OutputStreamWriter, BufferedInputStream, BufferedOutputStrea...

 

5. 표준 입출력 스트림

1)System 클래스의 표준 입출력 멤버

-System.out : 표준 출력 스트림(모니터)

-System.in : 표준 입력 스트림(키보드)

-System.err: 표준 에러 출력 스트림(모니터)

 

6. 바이트 단위 입출력 스트림

1)InputStream

-바이트 단위 입력 스트림 최상위 추상 클래스

-주요 하위 스트림

-FileInputStream : 파일에서 바이트 단위로 자료를 읽어들임.

-ByteArrayInputStream : byte 배열 메모리에서 바이트 단위로 자료를 읽어들임.

-FilterInputStream : 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스

-주요 메서드

 -int read() : 입력 스트림으로부터 1 바이트의 자료를 읽음.
                 읽은 자료의 바이트 수를 반환함.
-int read(byte[] b) : 입력 스트림으로부터 b[] 크기의 자료를 b[]에 읽어들임.
                          읽은 자료의 바이트 수를 반환함.
-int read(byte[] b,int off,int len) : 입력 스트림으로부터 b[] 크기의 자료를 b[]의 off 변수
                                           위치부터 저장하며 len만큼 읽어들임. 읽은 자료의 바이트 수를 반환함.
-void close() : 입력 스트림과 연결된 대상 리소스를 닫음. InputStream을 더이상 사용하지 않을 경우
                  호출해줘야 한다. (자원의 효율적인 사용을 위해서)

파일 생성

-1일 때 스트림이 종료되므로 while문 조건을 위와 같이 설정해주면 된다.

 

2)OutputStream

-바이트 단위 출력 스트림 최상위 추상 클래스

-주요 하위 스트림

 -FileOutputStream : 파일에서 바이트 단위로 자료를 씀.

 -ByteArrayOutputStream : byte 배열 메모리에서 바이트 단위로 자료를 씀.

 -FilterOutputStream : 기반 스트림에서 자료를 쓸 때 추가 기능을 제공하는 보조 스트림의 상위 클래스

-주요 메서드

-void write(int b) : 한 바이트를 출력함.
-void write(byte[] b) : b[] 크기의 자료를 출력함.
-void write(byte[] b,int off,int len) : b[] 배열에 있는 자료의 off 위치부터 len 개수만큼 자료를 출력함.
-void flush() : 출력을 위해 잠시 자료가 머무르는 출력 버퍼를 강제로 비워 자료를 출력함.
-void close() : 출력 스트림과 연결된 대상 리소스를 닫음.
                  ->닫으면 자동으로 출력 버퍼도 비워짐.(flush 처리가 됨.)

 

7. 문자 단위 입출력 스트림

1)Reader

-문자 단위 입력 스트림 최상위 추상 클래스

-주요 하위 클래스

 -FileReader : 파일에서 문자 단위로 읽는 스트림 클래스.

 -InputStreamReader : 바이트 단위로 읽은 자료를 문자로 변환해주는 보조스트림

 -BufferedReader : 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공하는 보조 스트림

-주요 메서드

-int read() : 입력 스트림으로부터 한 문자를 읽음. 읽은 문자를 반환함.
-int read(char[] buf) : 입력 스트림으로부터 buf 배열에 문자를 저장하고 실제로 읽은 문자 수를 리턴함.
-int read(char[] buf,int off,int len) : 입력 스트림으로부터 buf 배열의 off 위치부터 len 개수만큼의 문자를 읽음.
-close() : 입력 스트림과 연결된 대상 리소스를 닫음.

 

2)Writer

-문자 단위 출력 스트림 최상위 추상 클래스

-주요 하위 스트림

 -FileWriter : 파일에서 문자 단위로 출력하는 스트림 클래스.

 -OutputStreamWriter : 바이트 단위의 자료를 문자로 변환해 출력해주는 보조 스트림 클래스

 -BufferedWriter : 문자로 쓸 때 배열을 제공하여 한꺼번에 쓸 수 있는 기능을 제공하는 보조 스트림.

-주요 메서드

-void write(int c) : 출력 스트림으로 한 문자를 내보냄.
-void write(char[] buf) : 문자 배열 buf의 내용을 내보냄.
-void write(char[] buf,int off,int len) : 문자 배열 buf의 off 위치에서부터 len 개수의 문자를 내보냄.
-void write(String str) : 문자열 str을 출력함.
-void write(String str,int off,int len) : 문자열 str의 off 위치에서부터 len 개수의 문자를 내보냄.
-void flush() : 출력 버퍼에 있는 잔류하는 모든 문자열을 내보냄.
-void close() : 스트림과 연결된 리소스를 닫음. 출력 버퍼도 비워짐.

 

8. 보조 스트림 클래스들

1)실제 읽고 쓰는 스트림이 아닌 보조 기능을 제공하는 스트림

2)FilterInputStream과 FileOutputStream이 보조 스트림의 상위 클래스들.

3)생성자의 매개변수로 또다른 스트림(기반 스트림이나 다른 보조 스트림)을 가짐.

4)상위 클래스 생성자

  protected FilterInputStream(InputStream in)

 

 

9. InputStreamReader 와 OutputStreamWriter
1)바이트 단위로 읽거나 쓰는 자료를 문자로 변환해주는 보조 스트림
2)FileInputStream으로 읽은 자료를 문자로 변환해줌.

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형