Program Language/JAVA

[JAVA] 문자입력받기

Jinlib 2017. 5. 6. 16:42

문자 입출력

문자입출력 방법에는 2가지 방법이 있다
  • Scanner클래스
  • BufferedReader / BufferedWriter를 이용
※ 메모리 효율에는 Scanner클래스보다 BufferedReader / BufferedWriter 클래스가 더욱 효율적이므로 후자를 사용하도록 권장한다.

1. Scanner 클래스

1) 설명


2) 코드예시


3) 해설


2. BufferedReader / BufferedWriter 클래스

1) 설명

 ① 생성자

 생성자

설 명 

 BufferedReader(Reader in, int size)

 주어진 문자 입력 스트림에 대하여 size 크기만큼의 버퍼를 할당 받아 객체 생성 ( size는 생략가능)

 BufferedWriter(Reader in, int size)

 주어진 문자 출력 스트림에 대하여 size 크기만큼의 버퍼를 할당 받아 객체 생성 ( size는 생략가능)

 ② 메소드

BufferedReader 메소드 -> String readLine() 한줄을 읽는다. "\n" 혹은 "\r"을 만날때 까지 읽어옴
BufferedWriter 메소드 -> String newLine() 줄을 바 꾼다.

2) 코드 예시

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
 
 
public class BufferedReaderWriter {
    
    public static void main(String args[]){
        
        FileReader fr = null;
        FileWriter fw = null;
        
        BufferedReader br = null;
        BufferedWriter bw = null;
        
        Date d = null;
        
        try{
            
            // "ReadFile.txt" 파일을 읽는 FileReader 객체 생성
            // BufferedReader 객체 생성
            fr = new FileReader("ReadFile.txt");
            br = new BufferedReader(fr);
            
            // FileWriter로 파일 "CopyFile.txt"에 출력한다. 기존 파일에 덮어쓴다.
            // BufferedWriter 객체 생성
            fw = new FileWriter("CopyFile.txt"false);
            bw = new BufferedWriter(fw);
            
            String s = null;
            d = new Date();
            
            // 파일 복사 시작 시간
            long start = d.getTime();
            
            // ReadFile.txt 에서 한줄씩 읽어서 BufferedRaeder에 저장한다.
            while((s=br.readLine())!=null){
                
                // 읽은 데이터(한줄)을 BufferedWriter에 쓴다.
                // 한줄씩 읽으므로, newLine() 메소드로 줄바꿈을 해준다.
                bw.write(s);
                bw.newLine();
            }
            
            // 복사 완료된 시간을 얻는다.
            d = new Date();
            long end = d.getTime();
            
            System.out.println("복사 시간 : " + (end-start));
            
            
        }catch(Exception e){
            
            e.printStackTrace();
        
        }finally{
            
            // BufferedReader FileReader를 닫아준다.
            if(br != nulltry{br.close();}catch(IOException e){}
            if(fr != nulltry{fr.close();}catch(IOException e){}
            
            // BufferedWriter FileWriter를 닫아준다.
            if(bw != nulltry{bw.close();}catch(IOException e){}
            if(fw != nulltry{fw.close();}catch(IOException e){}
            
        }
        
    }
 
}
 
 
출처: http://hyeonstorage.tistory.com/249 [개발이 하고 싶어요]
cs

3) 해설

간단히 StringTokenizer와 같이 설명하면
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());

BufferedReader는 입력한 모든값을 br에 저장하는데 
리턴값이 String이므로 Integer.parseInt를 통해 int형으로 바꿔줘서 int에 저장할 수 있다.
StringTokenizer는 입력한 모든값을 \n이나 \r를 구분한다.
st.nextToken()을 통해 구분한값들을 하나씩 저장하는 모습을 볼 수 있다.







'Program Language > JAVA' 카테고리의 다른 글

[JAVA] ArrayList 사용법  (0) 2017.05.06
[JAVA]next() nextline() 차이점  (3) 2017.05.02
JAVA에서 length사용법  (0) 2017.03.27
Eclipse Run as에 아무것도 안나올때  (2) 2017.03.27