🌻 JAVA/정리정리정리

[Java] BufferedReader, BufferedWriter로 빠른 입출력 하기

2020. 10. 5. 17:41
목차
  1.  
  2. 버퍼 입출력
  3. BufferedReader
  4. BufferedWriter
  5. 예시 Example
반응형
버퍼를 사용하면 키보드의 입력값을 버퍼에 한번에 모았다가 , 버퍼의 내용을 한번에 전송하기 때문에

Scanner, System.out.println 보다 훨씬 빠르고 효율적이다.

 

버퍼 입출력

  • 버퍼(buffer)
    • 데이터를 한 곳에서 다른 한곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역
    • 입출력 속도 향상을 위해 버퍼 사용
  • 버퍼 플러시(buffer flush)
    • 버퍼에 남아 있는 데이터를 출력시킴(버퍼를 비우는 동작)
  • BufferedReader
    • 버퍼를 이용한 입력
  • BufferedWriter
    • 버퍼를 이용한 출력

 

BufferedReader

Java를 처음 접하시는 분들이 주로 받는 입력방식은 Scanner입니다. Scanner를 통해 입력을 받을경우 Space Enter를 모두 경계로 인식하기에 입력받은 데이터를 가공하기 매우 편리합니다. 하지만 그에비해 BufferedReader는 Enter만 경계로 인식하고 받은 데이터가 String으로 고정되기때문에 입력받은 데이터를 가공하는 작업이 필요할경우가 많습니다. Scanner에 비해 다소 사용하기 불편하죠. 하지만 많은 양의 데이터를 입력받을경우 BufferedReader를 통해 입력받는 것이 효율면에서 훨씬 낫습니다. 입력시 Buffer를 활용함으로써 작업속도 차이가 많이납니다.

BufferedReader 사용법

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); //BufferedReader선언
String s = bf.readLine(); //String 문자열 받기
int i = Integer.parseInt(bf.readLine()); //Int

readLine()은 꼭! 예외처리를 해줘야 한다. readLine()을 할때마다 try&catch 를 사용해도 되지만,

대부분 throws IOException을 이용해 예외처리를 해준다.

데이터 가공

// 1번째 방법) StringTokenizer를 이용한다.
StringTokenizer st = new StringTokenizer(br.readLine()); //StringTokenizer인자값에 입력 문자열 넣음
int a = Integer.parseInt(st.nextToken()); //첫번째 호출을 to int
int b = Integer.parseInt(st.nextToken()); //두번째 호출을 to int

// 두번째 방법) string을 한번에 받아서 split을 이용해 배열로 변환
String s = br.readLine();
String array[] = s.split(" "); //공백마다 데이터 끊어서 배열에 넣음

 

BufferedWriter

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//선언
String s = br.readLine();//출력할 문자열

bw.write(s);//출력
bw.newLine(); //줄바꿈 -> 이게 잘 안된다. 개행을 할때에는 bw.write(s + "\n"); 처럼 사용한다.
bw.flush();//남아있는 데이터를 모두 출력시킴
bw.close();//스트림을 닫음

 

 

예시 Example

 

import java.io.*;
import java.util.StringTokenizer;

public class baekjoon_15552 {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));//reader선언
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//writer선언
        StringTokenizer st;//tokenizer 선언
        int n = Integer.parseInt(bf.readLine()); // 반복횟수

        for (int i=0; i<n; i++) {
            st = new StringTokenizer(bf.readLine()); 

            int a = Integer.parseInt(st.nextToken());
            int b = Integer.parseInt(st.nextToken());
            int sum = a+b;

            bw.write(sum + "\n");
        }
        bw.flush();
        bw.close();
    }
}

입력

5
1       1
12     34
5       500
40      60
1000   1000

출력

2
46
505
100
2000

 

 

출처 : jhnyang.tistory.com/92

출처 : coding-factory.tistory.com/251

반응형
저작자표시 (새창열림)
  1.  
  2. 버퍼 입출력
  3. BufferedReader
  4. BufferedWriter
  5. 예시 Example
'🌻 JAVA/정리정리정리' 카테고리의 다른 글
  • JAVA - STUDY 2주차 과제: 자바 데이터 타입, 변수 그리고 배열
  • JAVA - STUDY 1주차 과제 : JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가
  • Java9 , Map.of(key, value);
  • java 8, Optional<E> 사용법
iseunghan
iseunghan
꾸준하게 열심히..
iseunghan
iseunghan

공지사항

  • 어제보다 나은 오늘이 되기 위해 🔥
  • 분류 전체보기 (262)
    • 💐 Spring (14)
      • 개념 및 이해 (2)
      • Spring 핵심 기술 (24)
      • Spring REST API (8)
      • Spring MVC, DB 접근 기술 (7)
      • Spring Security (23)
      • Spring in Action (1)
    • 🌻 JAVA (84)
      • 자바 ORM 표준 JPA 프로그래밍 (20)
      • 알고리즘, 자료구조 (13)
      • 디자인 패턴 (7)
      • 정리정리정리 (43)
      • JUnit (1)
    • 🔖 Snippets (3)
      • Javascript (3)
    • ⚙️ Devops (22)
      • ⛏ Git (11)
      • 🐳 Docker (6)
      • 🐧 Linux (3)
      • 🌈 Jenkins (1)
      • 📬 Kafka (1)
    • 💬 ETC.. (4)
      • 💻 macOS (2)
    • 🌧️ ORM (2)
      • JPA (2)
    • 🐍 Python (3)
    • 📚 Databases (15)
      • 오라클로 배우는 데이터베이스 개론과 실습(2판) (3)
      • RealMySQL 8.0 (8)
    • 🔥 Computer Science (5)
      • 📡 네트워크 (5)
    • 🏷️ 협업 (1)
    • 📜 코딩테스트 (38)
      • BAEKJOON\수학 1, 수학 2 (8)
      • BAEKJOON\재귀 (5)
      • BAEKJOON\브루트 포스 (3)
      • BAEKJOON\정렬 (1)
      • BAEKJOON\백트래킹 (5)
      • BAEKJOON\BFS, DFS (6)
      • BAEKJOON\이분탐색 (1)
      • BAEKJOON\다이나믹 프로그래밍 (9)
      • BAEKJOON\그리디 알고리즘 (0)
    • ✨ ISEUNGHAN (1)

인기 글

최근 글

전체
오늘
어제
반응형
hELLO · Designed By 정상우.
iseunghan
[Java] BufferedReader, BufferedWriter로 빠른 입출력 하기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.