keyboard 외에도 file, network 등에서 입출력하는 일이 빈번하다. 이때 byte 형식으로 data가 전송되는데 이것을 입출력하는 방법에 익숙해져야한다.
InputStream
1byte 처리 스트림으로 2진수 8자리 (11111111) 즉 10진수로 보자면 256가지(0~255)를 표현할 수 있다.
영문자 대소문자, 숫자, 특수문자만 처리할 수 있다.
InputStreamReader
2byte 처리 스트림으로 2진수 16자리 즉 10진수로 보자면 65,536가지를 표현할 수 있다.
모든 문자를 처리할 수 있다.
BufferedReader
문자열을 1줄씩 입력 받을 수 있다.
OutputStream
1byte 처리 스트림으로 출력할 때 사용한다.
OutputStreamWriter
2byte 처리 스트림으로 출력할 때 사용한다.
BufferedWriter
문자열을 출력할 수 있다. 1줄로 출력되며 개행, 들여쓰기도 가능하다.
비교
InputStream <=> OutputStream
InputStreamReader <=> OutputStreamWriter
BufferedReader <=> BufferedWriter
write() 출력준비
flush() 방출
개행(줄바꿈), 들여쓰기 하는 법
bw.write("\r\n");
역슬래쉬를 활용해야한다. 글꼴에 따라 예시와 같이 다르게 보일 수 있다. (정상 동작한다.)
newLine();
메소드를 사용해서 개행을 할 수도 있다.
bw.write("\t");
들여쓰기 기능을한다.
MainClass01 (InputStream)


InputStream
1byte 단위 처리 스트림이다.
영문자 대소문자, 숫자, 특수문자만 처리할 수 있다. (한글 처리 불가)
키보드와 연결된 InputStream type의 참조값을 kbd 라는 지역변수에 담아 사용했다.
MainClass02 (InputStreamReader)


InputStreamReader
2byte 처리 스트림으로 2진수 16자리 즉 10진수로 보자면 65,536가지를 표현할 수 있다.
모든 문자를 처리할 수 있다.
MainClass03 (BufferedReader )



BufferedReader
문자열을 1줄씩 입력 받을 수 있다.
BufferedReader 는 Reader type을 인자로 받는데 InputStreamReader가 Reader를 상속받기 때문에 예시에서 isr이 인자로 문제없이 사용가능했다.
MainClass04 (OutputStream)


예시에서 PrintStream이 다양한 기능을 담고 있길래 PrintStream type으로 변수를 사용한다면 더 유용하겠지만 OutputStream에 대해 공부하기 위해 부모 클래스인 OutputStream type을 사용하였다.
OutputStream은 1byte 처리 스트림이다.
OutputStream 의 write() 메소드는 해당 인자를 작성할 준비를 하는 것이다.
OutputStream 의 flush() 메소드는 준비한 것을 방출해준다.
MainClass05 (OutputStreamWriter)


OutputStreamWriter은 2byte 처리 스트림이다. 예시에서와 같이 1byte 혹은 문자열도 출력 가능하다.
MainClass06 (BufferedWriter, 개행)


BufferedWriter 한줄로 해당 데이터를 출력해준다. 이때 원하는 때 개행, 들여쓰기를 하는 방법이 있다.
개행(줄바꿈), 들여쓰기 하는 법
bw.write("\r\n");
역슬래쉬를 활용해야한다. 글꼴에 따라 예시와 같이 다르게 보일 수 있다. (정상 동작한다.)
newLine();
메소드를 사용해서 개행을 할 수도 있다.
bw.write("\t");
들여쓰기 기능을한다.
'java' 카테고리의 다른 글
| Step16_InputOutput (txt 파일 작성 및 읽기) (0) | 2022.08.04 |
|---|---|
| Step16_InputOutput(File class) (0) | 2022.08.04 |
| Step15_Thread (심화 예제) (0) | 2022.08.04 |
| Step15_Thread (다양한 방식으로 Thread 만들기) (0) | 2022.08.03 |
| Step14_Swing (Layout, addActionListener 심화 예제 CalcFrame) (0) | 2022.08.03 |