본문 바로가기
JAVA/문법, Collection

자바 입출력 정리(BufferedReader/Writer ,Scanner, System.out.print)

by wanna_dev 2024. 1. 11.

문득 기본 자바의 기본 문법을 공부하다가 구글링 하다보면 기본서에 적혀있는 Scanner, System.out.println를 거의 활용하지 않는 것을 보고 BufferdReader과 Writer를 쓸줄 알아야한다고 깨달았다.

 

Scanner와 System.out.print 의 속도 부분 성능이 좋지 않아서 라고 한다. 더 자세한 차이는, BufferedReader/Writer는 버퍼에 담아두었다가 내보내고 쌓아두었다가 들여온다는 점 이다.  또한 멀티 스레딩 환경이나 대용량 input의 경우에서도 유리하다고 한다. 내부 구현은 추후 공부하도록 하고 사용법 정도만 이해하려고 한다.

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

 

public class Number {

	public static void main(String[] args) throws IOException {
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		bw.write("test1");
		bw.flush();
		bw.close();
		
	}

}

다음과 같이 sysout을 대체할 수 있는 것 같다.

 

Scanner를 대체할 BufferedReader이다.

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Number {

	public static void main(String[] args) throws IOException {
		
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //선언
		String s = bf.readLine(); //String
		//int i = Integer.parseInt(bf.readLine()); //Int
		
		StringTokenizer st = new StringTokenizer(s); //StringTokenizer인자값에 입력 문자열 넣음
		int a = Integer.parseInt(st.nextToken()); //첫번째 호출
		int b = Integer.parseInt(st.nextToken()); //두번째 호출

		String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		bw.write(array[0]);
		bw.write(array[1]);
		bw.write(array[2]);
		bw.flush();
		bw.close();
		
		
	}

}

입력 1 2 3 

출력 123

'JAVA > 문법, Collection' 카테고리의 다른 글

JAVA ASCII trick  (0) 2024.01.13
JAVA abs function  (0) 2024.01.13
JAVA input.txt 파일경로 설정  (1) 2024.01.11