FileReader와 FileWriter는 FileInputStream, FileOutputStream과 기능과 사용법은 유사하다. 다른점이라면 이 클래스들은 문자 단위로 IO를 수행한다는 것이다.
FileReader와 FileWriter는 각각 InputStreamReader와OnputStreamWriter의 하위 클래스로 유니코드 문자열과 바이트의 변환 기능을 포함하고 있다.
즉, 바이트 처리 스트림 클래스인FileInputStream이나FileOutputStream에는 Charset이나 CharsetDecoder등과 관련된 처리가 없다는 뜻이다. 하지만InputStreamReader와OnputStreamWriter에는 이러한Charset관련 파라미터를 받아 처리를 해주는 생성자가 존재한다.
다음코드는FileReader와 FileWriter를 이용하여 파일을 복사하는 코드이지만 모든 파일은 바이트단위로 구성되어 있기때문에 실제로 바이트 단위의 IO클래스인는 FileInputStream이나 FileOutputStream클래스를 사용하는 것이 성능상 좋다.
package ch5; import java.io.FileReader; import java.io.FileWriter; public class FileCopy { public static void main(String[] args) { if (args.length != 2) { System.out.println("사용법 : java FileCopy 파일1 파일2"); System.exit(0); }// if FileReader fr = null; FileWriter fw = null; try { fr = new FileReader(args[0]); fw = new FileWriter(args[1]); char[] buffer = new char[512]; int readcount = 0; while ((readcount = fr.read(buffer)) != -1) { fw.write(buffer, 0, readcount); } System.out.println("파일을 복사했습니다."); } catch (Exception ex) { System.out.println(ex); } finally { try { fr.close(); fw.close(); } catch (Exception e) { } } } }
'Java > Input/Output Facilities' 카테고리의 다른 글
[문자 스트림] 키보드로부터 한줄씩읽어 파일저장 - BufferedReader와PrinterWriter의 사용 (1) | 2013.02.11 |
---|---|
[문자 스트림] BufferedReader와BufferedWriter를 이용한 파일복사 (0) | 2013.02.11 |
[문자 스트림] 문자단위로 파일내용을 읽은 후 화면으로 출력, 바이트단위처리와 문자단위 처리의 혼합사용 (0) | 2013.02.11 |
[바이트 스트림] 파일이나 배열의 내용을 읽어들여 출력 (0) | 2013.02.11 |
[바이트 스트림] 바이트배열의 사용[ByteArrayInputStream / ByteArrayOutputStream] (0) | 2013.02.11 |