자바 입출력1

1. 스트림이란?

  • 네트워크에서 자료의 흐름이 물과 같다는 의미에서 유래
  • 다양한 입출력 장치에 독립적으로 일관성 있는 입출력을 제공하는 방식
  • 입출력이 구현되는 곳: 파일 디스크, 키보드, 마우스, 메모리 네트워크 등

2. 스트림의 구분

대상 기준

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

자료의 종류

  • 바이트 스트림: 동영상, 음악 파일 등을 읽고 쓸 때 사용
  • 문자 스트림: 2바이트 단위로 처리, 바이트 단위 처리 시 발생하는 문자 깨짐을 방지

기능

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

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

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

3. 표준 입출력

  • System 클래스의 표준 입출력 멤버
public class System() {
	public static PrintStream out;
	public static PrintStream in;
	public static PrintStream err;
}

System.out

  • 표준 출력(모니터) 스트림
System.out.println("표준 출력");

System.in

  • 표준 입력(키보드) 스트림
int d = System.in.read(); //한 바이트 읽어내기

System.err

  • 표준 에러 출력(모니터) 스트림
System.err.println("데이터"); //빨갛게 출력

4. Scanner 클래스

  • java.util 패키지에 있는 입력 클래스
  • 문자뿐 아니라 정수, 실수 등 다른 자료형도 읽을 수 있음
  • 콘솔, 파일 등 여러 대상에서 자료를 읽을 수 있음

5. 바이트 단위 스트림 - InputStream

  • 바이트 단위 입력용 최상위 스트림
  • 추상 메서드를 포함한 추상 클래스로 하위 클래스가 구현하여 사용

주요 하위 클래스

  • FileInputStream - 파일에서 바이트 단위로 자료를 읽습니다
  • ByteArrayInputStream - Byte배열 메모리에서 바이트 단위로 자료를 읽습니다
  • FilterInputStream - 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스입니다

메서드

  • int read() - 입력 스트림으로부터 한 바이트의 자료를 읽습니다. 읽은 자료의 바이트 수를 반환합니다.
  • int read(byte b[ ]) - 입력 스트림으로부터 b[ ] 크기의 자료를 b[ ]에 읽습니다. 읽은 자료의 바이트 수를 반환합니다
  • int read(byte b[ ], int off, int len) - 입력 스트림으로부터 b[ ] 크기의 자료를 b[ ]의 off변수 위치부터 저장하여 len만큼 읽습니다. 읽은 자료의 바이트 수를 반환합니다.
  • void closer() - 입력 스트림과 연결된 대상 리소스를 닫습니다

5-2. 바이트 단위 스트림 - OutputStream

  • 바이트 단위 출력용 최상위 스트림
  • 추상 메서드를 포함한 추상 클래스로 하위 클래스가 구현하여 사용

주요 하위 클래스

  • FileOutputStream - 바이트 단위로 파일에 자료를 씁니다
  • ByteArrayOutputStream - Byte배열에 바이트 단위로 자료를 씁니다
  • FilterOutputStream - 기반 스트림에서 자료를 쓸 때 추가 기능을 제공하는 보조 스트림의 상위 클래스입니다

메서드

  • int wirte() - 한 바이트를 출력합니다
  • int wirte(byte b[ ]) - b[ ] 배열에 있는 자료를 출력합니다
  • int wirte(byte b[ ], int off, int len) - b[ ] 배열에 있는 자료의 off 위치부터 len 개수만큼 자료를 출력합니다
  • void flush() - 출력을 위해 잠시 자료가 머무르는 출력 버퍼를 강제로 비워 자료를 출력합니다
  • void closer() - 출력 스트림과 연결된 대상 리소스를 닫습니다. 출력 버퍼가 비워집니다

6. flush()와 close() 메서드

  • 출력 버퍼를 비울 때 flush() 메서드 사용
  • close() 메서드 내부에서 flush()가 호출되므로 close() 메서드가 호출되면 출력 버퍼가 비워짐

7. 문자 단위 스트림 - Reader

  • 문자 단위로 읽는 최상위 스트림

주요 하위 클래스

  • FileReader - 파일에서 문자 단위로 읽는 스트림 클래스
  • InputStreamReader - 바이트 단위로 읽은 자료를 문자로 변환해 주는 보조 스트림 클래스
  • BufferedReader - 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공해 주는 보조 스트림

주요 메서드

  • int read() - 파일로부터 한 문자를 읽습니다. 읽은 값을 반환합니다
  • int read(char[ ] buf) - 파일로부터 buf 배열에 문자를 읽습니다
  • int read(char[ ] buf, int off, int len) - 파일로부터 buf 배열의 off 위체에서부터 len 개수만큼 문자를 읽습니다
  • void close() - 스트림과 연결된 파일 리소스를 닫습니다

태그:

카테고리:

업데이트: