[JAVA] IO

zyan·2021년 9월 29일
0

Java

목록 보기
1/5

🍋 IO(Input Output)

🟡 buffer

데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역

🟡 BufferedReader/BufferedWriter

BufferedReader/BufferedWrite 는 이름 그대로, 버퍼를 이용해 읽고 쓰는 함수

  • 버퍼를 사용하지 않는 입력

    키보드의 입력이 키를 누르는 즉시 바로 전달 됨 (키보드→프로그램)

  • 버퍼를 사용하는 입력

    키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송. 버퍼가 가득 차거나 개행 문자가 나타나면 버퍼의 내용을 한 번에 전송함

⇒ 입력값을 하나하나 전달하는 것보다 입력받은 값들을 한번에 전달하는 것이 더 효율적이다.

  1. BufferedReader

    • readLine()

      readLine()이라는 메소드를 통해 입력받는다. 이 경우 리턴값은 String으로 고정되기에, String이 아닌 다른 타입으로 입력받기 위해서는 형변환이 필수이다.

    • 예외처리

      예외처리가 필수적이다. readLine()실행 시마다 try&catch를 활용해 예외처리를 해주거나, throw IOExceptiond을 이용한다.

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        try {

        	String data = null;

        	while ((data=in.readLine()) != null) {
        		System.out.println(data);
        	}

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

    • write(), flush(), close()

      write()를 사용하여 데이터를 입력하고, flush()를 통해 버퍼를 비워내는 동시에 콘솔에 출력 출력이 끝난 후에는 close()를 통해 스트림을 닫아준다.

public static void io2() {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter out = null; //try블록에서 선언할 경우 finally블록에서 종료불가. 따라서 선언은 try밖에서
        try {
        	out = new BufferedWriter(new FileWriter("playdata.txt"));
        	String data = null;
        			
        	while ((data=in.readLine()) != null) {
        		out.write(data);
        		out.newLine(); //라인바꿈 반영해서 출력
        		out.flush(); //버퍼 메모리에 존재하는데이터를 파일에 잔존 데이터 없이 출력
        	}
        			
        } catch (IOException e) {
        	e.printStackTrace();
        } finally {
        	try {
        		in.close();
        		out.close();
        	} catch (IOException e) {
        		e.printStackTrace();
        	}
        }
}

0개의 댓글