문자 입출력
문자입출력 방법에는 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 != null) try{br.close();}catch(IOException e){} if(fr != null) try{fr.close();}catch(IOException e){} // BufferedWriter FileWriter를 닫아준다. if(bw != null) try{bw.close();}catch(IOException e){} if(fw != null) try{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 |