JAVA 11강_1_입출력

열라뽕따히·2024년 3월 2일

JAVA

목록 보기
69/79

Java에서의 입출력(IO : Input / Output) 방식

  • 스트림이라는 방식을 이용함

  • 스트림의 사전적 의미 : 시냇물이라는 뜻을 가지고 있음. 즉, 데이터가 물 흐르는 것처럼 흐른다고 생각하면 됨

  • Java에서의 스트림 : 순서가 있는 일련의 연속된 데이터

  • 스트림의 종류
    1) 바이트 스트림 : 1바이트 단위로 데이터를 입출력(byte)
    2) 문자 스트림 : 2바이트 단위로 데이터를 입출력(char)

  • Java 입출력 관련 클래스 : java.io 패키지에 존재함
    ==> 해당 패키지에 있는 클래스들을 이용하여 파일을 입출력 함

  • checked 방식의 예외 처리가 적용됨

  • Java의 입출력은 단방향성 ==> 한쪽으로만 입력하고 한쪽으로만 출력 됨

  • FIFO(First In First Out) ==> 먼저 입력되고 먼저 출력 됨



<예시1>


=============================코드=============================

package goott;

import java.io.IOException;
import java.io.InputStream;

public class FileIO_01 {

	public static void main(String[] args) {
		
		System.out.println("한 문자를 입력하세요");
		
		// System.in : 표준입력장치(키보드)
		InputStream is =  System.in;
		
		try {
			int readByte = is.read();
			System.out.println("읽어온 데이터(ASCII) >>> " + readByte);
			
			System.out.println("읽어온 데이터(문자) >>> " + (char)readByte);
			
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

=============================실행=============================






<예시2>

이번에는 C드라이브에서 생성한 Test 폴더의 test.txt파일 내의 내용을 바이트 스트림 방식으로 화면에 출력해보자


=============================코드=============================

import java.io.FileInputStream;
import java.io.InputStream;

public class FileIO_02 {

	public static void main(String[] args) {
		
		// 바이트 스트림 방식
		InputStream is = null;
		
		// FileInputStream은 InputStream의 자식 클래스임 (XxxInputStream이면 InputStream의 자식 클래스!)
		try {
			is = new FileInputStream("C:/test/test.txt");
			
			while(true) {
				int readByte = is.read();
				
				if(readByte == -1) {    // -1은 데이터가 더 없다는 뜻
					break;
				}
				
				System.out.println("읽은 데이터 : " + (char)readByte + ", 남은 바이트 수 : " + is.available());
			}
			
		} catch (Exception e) {  // 다중 catch를 쓰지 않고 싶다면 상위 catch(Exception e)로 처리하면 됨
			
			e.printStackTrace();
		} 
		
	}

}

=============================실행=============================





<예시3>

windows에 있는 텍스트 파일의 system 바이트 값을 화면에 출력해보자


=============================코드=============================

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileIO_03 {

	public static void main(String[] args) {
		
		InputStream is = null;
		int readByte;
		
		try {
			is = new FileInputStream("C:\\Windows\\system.ini");
			
			while((readByte = is.read()) != -1) {   // -1이 아니라면 반복해라!
				
				System.out.print((char)readByte);
				
			}
			
		} catch (Exception e) {
			
			e.printStackTrace();
			
		} finally {
			
			try {
				is.close();
			} catch (IOException e) {
				
				e.printStackTrace();
			}
		}

	}

}

=============================실행=============================





<예시4>


=============================코드=============================

import java.io.IOException;

public class FileIO_04 {

	public static void main(String[] args) {

		System.out.println("한 줄을 입력하세요");

		try {
			while (true) { // enter 만 인식하게 한다!
				int num = System.in.read(); // 표준입력장치로 받은 값을 읽어라

				if (num == '\n') { // 현재 num은 아스키코드 값, '\n'은 엔터값이라고 보면 됨
					break;  // enter를 치면 break해라!
				}

				System.out.print((char) num);
			}

		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

=============================실행=============================

0개의 댓글