210426_7(활용편. 유틸클래스 java.io.* , Stream)
IOStream
java.io.*;
I O Stream
Input Output data흐름, 통로
app 앱 대상
----------------------- --------------------------
output
데이타 발생 ----------------->전송,저장 ... 영구보관
<----------------- 파일, 네트워크, 디비
input
io stream의 클래스 사용법
바이트 1byte | 문자 2byte | 대상 | |
InputStream | Reader | 읽기 | 기본 |
OutputSteam | Writer | 쓰기 | 기본 |
FileInputStream | FileReader | 읽기 | 파일 |
FileOutputStream | FIleWriter | 쓰기 | 파일 |
BufferedInputStream | BufferedReader | 읽기 | 버퍼 |
BurreredOutputStream | BufferedWriter | 쓰기 | 버퍼 |
특징 : Simplex(단방향전송방식) -->단방향구조, 그래서 데이타를 주고받으려면 나가는것과 들어오는것을 별도로 구성해야 한다.
참조 : 전화기 (말하면서 동시에 듣는다.) --->양방향구조 : Full Duplex(전이중 전송방식)
무전기 (말하고, 듣기를 동시에 할수없다) --->Half Duplex(반이중 전송방식)
버퍼 : 완충메모리, 유저의 앱이 실행할때 앱의 실행속도와 대상의 속도가 차이가 날때
그차이를 완충하기 위해 저장하는 메모리
ex)영화 스트림 앱속도 : 30장/1초 <---속도차---> 네트워크(서버)속도 15장/1초
1초에 30장을 출력할 수 있을 만큼 저장(버퍼링)하여 출력하도록 하는 메모리
결론 : 우리가 실행하는 입은 외부환경과 언제나 속도차가 나게 되어있다.
따라서, 버퍼의 사용은 필수적이라고 말하겠다.
ioStream을 코딩하다 보면, 버퍼는 무조건 사용됨을 알 수 있다.
package chapter20;
import java.io.*; //
class BufferInput {
public static void main(String[] args) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
//콘솔에 입력되는 데이터를(system.in) 문자로 읽어들여서((new InputStreamReader)
//그것을 입력버퍼에 할당하고 그버퍼를 in이라는 객체변수를 가리킨다.
System.out.println("BufferedReader in 객체 생성");
System.out.println("문장을 입력해 주세요:");
String s = "";
try {
s = in.readLine(); //한줄을 읽어서 s에 넣고
} catch (Exception e) {
System.out.println("Error : " + e.toString());
}
System.out.println(s); // s를 콘솔에서 출력
}
}
//콘솔창에 입력하면 그대로 출력된다.
//BufferedReader in 객체 생성
//문장을 입력해 주세요:
//12345
//12345