JAVA(Sol)(정리대기중..언젠가)

210426_7(활용편. 유틸클래스 java.io.* , Stream)

너굴셉 2021. 4. 26. 18:12

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