Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

Everything has an expiration date

176 - Java 자바의 기본 입출력(I/O) : 바이트 스트림 InputStream, System.out 을 InputStreamReader, OutputStreamWriter로 문자 변환하여 출력하는 프로그램. 본문

[Java]/Program source (java)

176 - Java 자바의 기본 입출력(I/O) : 바이트 스트림 InputStream, System.out 을 InputStreamReader, OutputStreamWriter로 문자 변환하여 출력하는 프로그램.

Jelly-fish 2023. 9. 25. 17:48
/* ========================================
  ■■■ 자바의 기본 입출력(I/O) ■■■
  - Reader Writer 관련 실습
==========================================*/

// is = System.in (바이트 기반 자바 기본 입력 객체)
// Reader rd = new InputStreamReader(is);
// ------          ----------------- == 
//  문자             바이트→문자    바이트


import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.io.IOException;




public class Test176
{
	
	// InputStream 을 매개변수로 받는 메소드 생성.
	public void process(InputStream is)			// 『System.in』 전달~!!!
	{
		int data;

		System.out.println("문자열 입력(종료:Ctrl+z)");

		try
		{   
			// 매개변수 is 라는 바이트 기반 스트림 객체(InputStream)를
			// 문자 스트림으로 변환하여(→ InputStreamReader 가 역할 수행)
			// Reader 타입의 rd 에서 참조할 수 있도록 처리
           
			Reader rd = new InputStreamReader(is);
			//==>> 문자 기반 입력 스트림 rd~!!!

			// 바이트 기반 스트림 객체인 자바 기본 출력 스트림(System.out)을
			// 문자 스트림으로 변환하여(→ OutputStreamWriter 가 역할 수행)
			// Writer 타입의 wt 에서 참조할 수 있도록 처리
			Writer wt = new OutputStreamWriter(System.out);
			//==>> 문자 기반 출력 스트림 wt~!!
				
			
			// write(int d) → 문자 스트림 출력 메소드 이다.
			
			// ---------------------------------------------------------
			// write() → 버퍼가 가득 차지 않으면 출력하지 않으므로
			//            flush() 메소드 사용한 것.
			// ---------------------------------------------------------
			
			// 읽어들이는 스트림으로부터 하나씩 얻어내기
			while ( (data = rd.read()) != -1 )
			{
				wt.write(data);		//-- 내보내는 스트림(물줄기)에 data 를 하나씩 기록
				wt.flush();			//-- 기록한 스트림(물줄기)를 밀어내어 내보냄.
			}
			
		}
		catch (IOException e)
		{
			System.out.println(e.toString());

		}

		

	}

	public static void main(String[] args)
	{
		Test176 ob = new Test176();
		ob.process(System.in);
	}

}

// 실행 결과


/*
문자열 입력(종료:Ctrl+z)
1234567
1234567
abcdefg
abcdefg
가나다라마바사
가나다라마바사
^Z
계속하려면 아무 키나 누르십시오 . . .
*/