Char 단위의 입출력 중에 두 가지를 소개할 것이다.
첫 번쨰는 console 을 이용해서 직접 사용자에게 입력을 받는 것이고
두 번쨰는 파일로 한 줄씩 입력받아서 다시 파일로 출력하는 것이다.
두 경우 모두 한 줄씩 읽어오는 객체인 BufferedReader 가 사용된다.
둘 다 한 줄씩 읽어오는데 사용자로부터 입력을 받을것인지, 파일을 받을 것인지에서 차이가 나는 것이다.
사용자로부터 콘솔창에 입력을 받아오는 경우는 System.in 을 사용할 것이고, 파일을 받아오는 경우에는 FileReader 를 사용한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class CharExam {
public static void main(String[] args) {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String line = null;
try{
line = bf.readLine();
System.out.println(line);
}catch (Exception e){
e.printStackTrace();
}
}
}

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedReader 는 Reader 객체만 받아들일 수 있다.
따라서 System.in 을 Reader 형태로 바꿔주어야 한다.
System.in 을 InputStreamReader 으로 받아서 Reader 형태로 바꾸어 BufferedReader 에 넣은 것이다.
import java.io.*;
public class CharExam2 {
public static void main(String[] args) throws FileNotFoundException {
BufferedReader br = null;
PrintWriter pw = null;
try{
br = new BufferedReader(new FileReader("src/Bus.java"));
pw = new PrintWriter(new FileWriter("CharExam.txt"));
String line = null;
while((line=br.readLine())!=null){
pw.println(line);
}
}catch (Exception e){
e.printStackTrace();
}finally {
try{
br.close();
}catch (Exception e){
e.printStackTrace();
}
try {
pw.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
}
BufferedReader br = null;
PrintWriter pw = null;
br = new BufferedReader(new FileReader("src/Bus.java"));
pw = new PrintWriter(new FileWriter("CharExam.txt"));
finally 구문에서 쓰기 위해서 br, pw 는 따로 선언해두었다.
while((line=br.readLine())!=null){
pw.println(line);
}
한 줄씩 읽어오고 쓰는데, 더 이상 읽어올 자료가 없을 때 까지 읽어온다. (= null ) 일 때 까지 읽어온다는 소리이다.
나머지는 앞에서 해주었던 예외처리를 해주면 된다.
예외처리 포스트 바로가기