Java/혼공단

[혼공단10기] JAVA - 6주차

슈코 2023. 8. 15. 22:12

마지막 주차

무더운 여름이 지나가고 있다.

아직도 30도가 넘는 무더위가 우리를 괴롭히고 있다.

 

이번 나의 여름은 어땠나

여름휴가는 스펙타클하고 힘들었지만,

언제 그랬냐는듯 벌써 오키나와가 그리워지고 있다.

그때는 몰랐던 그 순간순간이 생각이난다.

 

광복절에는 가장 가고싶었던 컨퍼런스, IT인의 축제인 인프콘에 다녀왔다.

새삼 너무 많은 사람들이 열정을 가지고 있다는 사실을 몸소 느낄 수 있었다.

더 열심히 해야겠다는 생각이 너무나 많이 들었던 순간이었다.

 

그리고 이번 여름은 혼공단을 하면서 열정을 이어나갈 수 있었다.

오랜만에 다시 자바를 공부하면서 많은것을 느낄 수 있었다.

벌써 6주가 지났지만, 더 공부하고 싶다는 생각이 든다.

이런 생각을 하게 해주셔서 참 감사하다.

 

 

6주차 기본미션 - 입출력 스트림 요약 정리하여 포스팅하기

입출력 스트림
  • java.io 패키지는 여러종류의 스트림 클래스를 제공한다
    • 바이트 기반 스트림: 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할때 사용
    • 문자 기반 스트림: 문자 데이터를 읽고 출력할때 사용
  • 최상위 클래스를 보면 스트림 클래스 구분 가능하다
    • 바이트 기반 최상위 InputStream, OutputStream
    • 문자 기반 최상위 Reader, Writer

 

바이트 스트림
  • 바이트 출력 스트림: OutputStream
    • 바이트 기반 출력 스트림의 최상위 클래스(추상 클래스)
    • 모든 바이트 기반 출력 스트림 클래스는 OutputStream 클래스를 상속받아서 생성
    • void write(int b): 1 byte 출력
    • void write(byte[] b): 매개값으로 주어진 배열의 모든 바이트 출력
    • void write(byte[] b, int off, int len): 매개값으로 주어진 배열 off부터 len까지 바이트 출력
    • void flush(): 출력 버퍼에 남은 모든 바이트 출력
    • void close(): 출력 스트림 닫기

 

  • 바이트 입력 스트림: InputStream
    • int read(): 1 byte를 읽어 리턴
    • int read(byte[] b): 읽은 바이트를 매개값으로 주어진 배열에 저장 후 바이트 수 리턴
    • int read(byte[] b, int off, int len): len개의 바이트를 읽고 매개값으로 주어진 배열 off부터 len개 저장
    • void close(): 입력 스트림 닫기

 

문자 스트림
  • 문자 출력 스트림: Writer
    • 문자 기반 출력 스트림의 최상위 클래스(추상 클래스)
    • 모든 문자 기반 출력 스트림 클래스는 Writer 클래스를 상속받아서 생성
    • void write(int c): 매개값으로 주어진 한 문자를 보낸다
    • void write(char[] cbuf): 매개값으로 주어진 배열의 모든 문자를 보낸다
    • void write(char[] cbuf, int off, int len): 매개값으로 주어진 배열 c[off]부터 len개 까지의 문자를 보낸다
    • void write(String str): 매개값으로 주어진 문자열을 보낸다
    • void write(String str, inf off, int len): 매개값으로 주어진 문자열에서 off순번부터 len개 까지의 문자를 보낸다
    • void flush(): 버퍼에 잔류하는 모든 문자 출력
    • void close(): 출력 스트림 닫기

 

  • 문자 입력 스트림: Reader
    • Reader는 문자 기반 입력 스트림의 최상위 클래스(추상 클래스)
    • 모든 문자 기반 입력 스트림은 Reader 클래스를 상속받아 생성
    • int read(): 1개의 문자를 읽고 리턴
    • int read(char[] cbuf): 읽은 문자들을 매개값으로 주어진 문자 배열에 저장, 읽은 문자 리턴
    • int read(char[] cbuf, int off, int len): len개의 문자를 읽고 매개값으로 주어진 문자 배열에서 cbuf[off]부터 len개까지 저장
    • void close(): 입력 스트림 닫기

 

보조스트림
  • 다른 스트림과 연결되어 여러가지 편리한 기능을 제공해주는 스트림
  • 자체적으로 입출력 수행 불가능 - 입출력 소스와 바로 연결되는 것들과 연결해서 입출력 수행
  • 문자변환, 입출력 성능 향상, 기본 타입 입출력 등의 기능 제공

 

보조스트림 연결
  • 보조스트림 변수 = new 보조스트림(연결스트림)
  • ex) InputStream을 문자 변환 보조 스트림 InputStreamReader에 연결
    • InputStream is = System.in;
    • InputStreamReader reader = new InputStreamReader(is);

 

문자 변환 보조 스트림
  • 소스 스트림이 바이트 기반 스트림이면서, 입출력 데이터가 문자면 Reader와 Writer로 변환하여 사용하는것을 고려
  • OutputStreamWriter
    • 바이트 기반 출력 스트림에 연결되어 문자 출력 스트림 Writer로 변환
  • InputStreamReader
    • 바이트 기반 입력 스트림에 연결되어 문자 입력 스트림  Reader로 변환

 

성능 향상 보조 스트림
  • 프로그램이 입출력소스와 직접 작업 X, 중간에 메모리 버퍼와 작업 - 실행 성능 향상 가능
  • BufferedOutputStream과 BufferedWriter
    • BufferedOutputStream은 바이트 기반 출력 스트림에 연결, 버퍼를 제공
    • BufferedWriter는 문자 기반 출력 스트림에 연결, 버퍼를 제공
    • 둘다 프로그램에서 전송한 데이터를 내부 버퍼에 쌓아 두었다가 버퍼가 꽉 차면 모든 데이터를 한꺼번에 보낸다
  • BufferedInputStream과 BufferedReader
    • BufferedInputStream은 바이트 기반 입력 스트림에 연결, 버퍼를 제공
    • BufferedReader는 문자 기반 입력 스트림에 연결, 버퍼를 제공
    • 둘다 입력소스로부터 자신의 버퍼 크기만큼 데이터를 미리 읽고 버퍼에 저장

 

기본 타입 입출력 보조 스트림
  • DataInputStream과 DataOutputStream 보조스트림을 연결하면 기본타입(boolean, char, short, int, long, float, double)을 입출력 할 수 있다

 

프린터 보조 스트림
  • PrintStream과 PrintWriter는 프린터와 유사하게 출력하는 print(), println() 메소드를 가지고 있는 보조스트림

 

 

6주차 선택미션 - p. 632 문제 2번 풀고, 풀이 과정 설명하기

 

혼공단은 끝났지만

혼공단을 하면서, 매주 하나의 포스팅을 할 수 있어 좋은 경험이었던거 같다.

지금 생각해보면 어떤 주차는 여유로웠고 어떤 주차는 힘들었던거 같다.

매주 반드시 해야하는 일정이 있기 때문에 조금은 부족한 부분이 있었다.

이게 끝나면 반드시 작성해야 하는 부분은 없지만 객체지향쪽을 조금 더 자세히 정리해두고 싶다.

혼공단은 끝났지만, 혼자 공부하는건 끝나지 않았다.

 

'Java > 혼공단' 카테고리의 다른 글

[혼공단10기] JAVA - 회고  (0) 2023.08.20
[혼공단10기] JAVA - 5주차  (0) 2023.08.08
[혼공단10기] JAVA - 4주차  (0) 2023.07.25
[혼공단10기] JAVA - 3주차  (0) 2023.07.21
[혼공단10기] JAVA - 2주차  (1) 2023.07.16